如何更改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
}
请给我建议怎么做。谢谢大家提前帮忙!
我自己找到了答案。如果有人感兴趣:
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
将被调用,并根据条件以某种背景颜色打印当前行。