看起来这个问题已被问过几次,但没有一个答案适合我的情景......
我正在使用网格,而ItemsSource是一个名为Record的自定义结构。
如何检查每个单元格的值并根据其值更改颜色?我在XAML中看到了这个问题的答案,但我想处理C#中的所有逻辑。这可能吗?
答案 0 :(得分:0)
我认为这仍然只是一个xaml解决方案,但建议你在这里做对了 -
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=PROPERTY_NAME}" Value="DESIRED_VALUE">
<Setter Property="DataGridCell.Background" Value="Blue" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
另外请注意,在某些情况下,您可能需要一个值转换器。
在代码中添加新列的位置,您可以像这样应用样式
var style = new Style();
var dataTrigger = new DataTrigger
{
Binding = new Binding("PROPERTY_NAME"),
Value = DESIRED_VALUE
};
dataTrigger.Setters.Add(new Setter
{
Property = Control.BackgroundProperty,
Value = ColorConverter.ConvertFromString("Red")
});
style.Triggers.Add(dataTrigger);
public void create_columns()
{
var col1 = new DataGridTextColumn();
col1.Header = "Station";
col1.Binding = new Binding("Station");
col1.CellStyle = style;
dataGrid.Columns.Add(col1);