我有一个绑定到集合的数据网格。我已将以下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>
数据触发器正在工作,但不是多数据触发器。失败的条件是检查datagridrow上的IsSelected为true的条件。如果我改变它所以它使用一个总是返回true的valueconverter,我会看到行为绿色。
基本上我希望数据对象将status属性设置为down的行为红色,但是当我选择那些行时,它们需要是绿色(或实际上是黑色的)而不是默认的蓝色。
答案 0 :(得分:5)
你的装订很合适。但DataGrid使用SystemColors.HighlightBrush和SystemColors.HighlightTextBrush来突出显示所选行。要更改所选行的颜色,您可以覆盖DataGrid的画笔,如下所示:
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
</DataGrid.Resources>
这样您就可以看到触发器设置的背景颜色。
希望这有帮助!
答案 1 :(得分:0)
您需要修改DataGrid.CellStyle,而不是DataGrid.RowStyle。最后一个是仅用于未选择的行。