使用WPF DataGrid时行颜色无法动态改变问题解决
在使用公司根据DataGrid自定义的控件时,会出现行颜色无法根据绑定值动态改变之前同事是在事件LoadRow中增加判断
1 private void MetroDataGrid_LoadingRow(object sender, System.Windows.Controls.DataGridRowEventArgs e) 2 { 3 DataGridRow row = e.Row; 4 ClassXXXitem = row.Item as ClassXXX; 5 if (item != null) 6 { 7 row.Foreground = item.Value!= "1" ? Brushes.Red : Brushes.Black; 8 } 9 10 }
这种方式虽然能够解决问题,但是会导致在滚动显示数据时触发该事件,导致效率下降,之后在网上搜索发现可以使用样式来实现,具体如下:
<DataGrid>
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="Value1">
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
<DataTrigger Binding="{Binding Value}" Value="Value2">
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
</DataGrid.Columns>
</DataGrid>
浙公网安备 33010602011771号