如何更改DataGrid(WPF)中的行背景颜色

本文关键字:背景 颜色 何更改 DataGrid WPF | 更新日期: 2023-09-27 17:54:07

我需要在DataGrid中用某种颜色绘制一些行。

我已经在主UI线程中创建了集合:

ObservableCollection<SomeElement> col= new ObservableCollection<SomeElement> ();

然后我从其他线程更改它:

int someElementNumber = 1;
int someInputValue = 11;
col[someElementNumber].SomePropery = someInputValue;

我在SomeElement上实现了INotifyPropertyChanged接口,以便我的DataGrid更新该行中的值。但我想检查这个值,并根据它打印一些背景色的行:

if (someInputValue > 10) {
    //paint row in some color
}

请给我建议怎么做。谢谢大家提前帮忙!

如何更改DataGrid(WPF)中的行背景颜色

我自己找到了答案。如果有人感兴趣:

1( 在XAML中的CheckProperty上用DataTrigger生成Binding。该属性不必是可见的。

<Window.Resources>
    <Style TargetType="DataGridRow">
        <Style.Triggers>
            <DataTrigger Binding="{Binding CheckProperty}" Value="Success">
                <Setter Property="Background" Value="Green" />
            </DataTrigger>
            <DataTrigger Binding="{Binding CheckProperty}" Value="Error">
                <Setter Property="Background" Value="Red" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Window.Resources>

2( 在线程中,更新Collection col设置CheckProperty的某个值取决于某个条件。

int someElementNumber = 1;
int someInputValue = 11;
col[someElementNumber].SomePropery = someInputValue;
if (someInputValue > 10) {
    col[someElementNumber].CheckProperty = "Success";
}
else {
    col[someElementNumber].CheckProperty = "Error";
}

CheckProperty必须上升属性更改事件!

当该属性刚刚更新时,DataTrigger将被调用,并根据条件以某种背景颜色打印当前行。