使用WPF,如何根据其值更改单元格的颜色?

时间:2016-09-13 19:23:03

标签: c# wpf datagrid

看起来这个问题已被问过几次,但没有一个答案适合我的情景......

我正在使用网格,而ItemsSource是一个名为Record的自定义结构。

enter image description here

如何检查每个单元格的值并根据其值更改颜色?我在XAML中看到了这个问题的答案,但我想处理C#中的所有逻辑。这可能吗?

1 个答案:

答案 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);