我需要在DataGrid中以某种颜色绘制一些行。
我在主UI线程中创建了集合:
ObservableCollection<SomeElement> col= new ObservableCollection<SomeElement> ();
然后我从其他线程更改它:
int someElementNumber = 1;
int someInputValue = 11;
col[someElementNumber].SomePropery = someInputValue;
我在INotifyPropertyChanged
上实施了SomeElement
接口,以便我的DataGrid
更新该行中的值。但我想检查这个值并依赖于它的某些背景颜色的打印行:
if (someInputValue > 10) {
//paint row in some color
}
请告诉我如何做到这一点。感谢大家提前帮助!
答案 0 :(得分:1)
我自己找到答案。如果有人感兴趣的话:
1)在XAML中的Binding
上使用DataTrigger
CheckProperty
。该属性无需显示。
<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
必须Rise Property changed event!
当该属性刚刚更新时,将调用DataTrigger
并以某种背景颜色打印当前行,具体取决于条件。