有条件地设置数据网格行样式突出显示背景和文本
本文关键字:显示 背景 文本 样式 置数据 网格 有条件 | 更新日期: 2023-09-27 18:36:34
我有一个数据网格,我根据绑定属性QualityStatus突出显示行颜色/文本。它工作正常,但默认行突出显示会破坏行颜色。我意识到我可以将 HighlightBrushKey 设置为透明,这样颜色就不会改变,但这不会影响"非活动"颜色,就像您选择了一行但随后聚焦另一个控件一样。另外,我也不确定如何设置选定的行字体颜色。
理想情况下,我只会有标签,我可以在其中为3个条件中的每个条件设置突出显示背景/文本颜色,但不确定如何做到这一点。
<DataGrid.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent" />
<SolidColorBrush x:Key="{x:Static SystemColors.InactiveBorderBrushKey}" Color="Transparent" />
</DataGrid.Resources>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Style.Triggers>
<DataTrigger Binding="{Binding QualityStatus}" Value="Poor">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
<DataTrigger Binding="{Binding QualityStatus}" Value="Fair">
<Setter Property="Background" Value="Yellow"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Bold"/>
</DataTrigger>
<DataTrigger Binding="{Binding QualityStatus}" Value="Good">
<Setter Property="Background" Value="LightGreen"/>
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontWeight" Value="Normal"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
这
适用于.Net 4.0:
<SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Transparent" />
这是您更改文本颜色的方式:
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="White"/>