我正在努力加快如何在DataGrid上使用DataTriggers。
我的数据表中有四列(节点,名称,值,标志)。 Flag是数据网格中的隐藏列。
当Flag = 2时,我会让DataGridRow具有PaleGreen背景,但Value列应为红色。我知道我可以为flag列创建一个样式,因为这不可见,这没有用。
很抱歉,如果这是一个新手问题。首次从WinForms进军wpf。
到目前为止我所拥有的:
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Flag}" Value="2">
<Setter Property="Background" Value="PaleGreen" />
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
<DataTrigger Binding="{Binding Flag}" Value="3">
<Setter Property="Background" Value="CadetBlue" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
答案 0 :(得分:2)
想出来。完整性代码
<UserControl.Resources>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Flag}" Value="2">
<Setter Property="Background" Value="PaleGreen" />
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
<DataTrigger Binding="{Binding Flag}" Value="3">
<Setter Property="Background" Value="CadetBlue" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="DataGridCell" x:Key="ValueColumn">
<Style.Triggers>
<DataTrigger Binding="{Binding Flag}" Value="2">
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Header="Node" Binding="{Binding Path=Node}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"/>
<DataGridTextColumn MinWidth="300" Header="Value" Binding="{Binding Path=Value}" CellStyle="{StaticResource ValueColumn}"/>
<DataGridTextColumn Header="Flag" Binding="{Binding Path=Flag}" Visibility="Hidden" />
</DataGrid.Columns>
</DataGrid>