rhy*_*yek 2 wpf datagrid triggers background datatrigger
我有一个绑定到集合的数据网格.我已将以下rowstyle应用于datagrid:
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="Down">
<Setter Property="Background" Value="Red" />
<Setter Property="Foreground" Value="White" />
</DataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Status}" Value="Down" />
<Condition Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsSelected}" Value="True" />
</MultiDataTrigger.Conditions>
<Setter Property="Background" Value="Green" />
<Setter Property="Foreground" Value="White" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)
数据触发器正在工作,但不是多数据触发器.失败的条件是检查datagridrow上的IsSelected为true的条件.如果我改变它所以它使用一个总是返回true的valueconverter我会看到行为绿色.
基本上我希望数据对象将status属性设置为down的行为红色,但是当我选择那些行时,它们需要是绿色(或实际上是黑色的)而不是默认的蓝色.
你的装订很合适.但DataGrid使用SystemColors.HighlightBrush和SystemColors.HighlightTextBrush来突出显示所选行.要更改所选行的颜色,您可以覆盖DataGrid的画笔,如下所示:
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
</DataGrid.Resources>
Run Code Online (Sandbox Code Playgroud)
这样您就可以看到触发器设置的背景颜色.
希望这可以帮助!