我希望WPF数据网格单元格的背景颜色在修改内容后更改颜色。每个单元格后面都有一个ViewModel对象,该对象包含以下属性-值,原始值和已修改。当用户编辑单元格内容时,这将通过数据绑定自动触发Amount属性。然后,此属性设置器将其与原始值进行比较,并将boolean Modified属性分别设置为true或false,并通知这些属性的绑定进行更新。
到目前为止,我已经在DataGridTextColumn的ElementStyle属性上使用Style实现了部分结果,如下所示
<Style x:Key="DataGridTextStyle" TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=MyViewModel.Modified}" Value="True">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
这将更新文本内容的背景色,但这只是单元格中心的一小部分。我希望整个单元格更新其背景色,而不仅仅是textblock属性。
我可以修改上述触发器以在可视树中向上搜索以找到父DataGridCell并在其上设置Background属性,而不是仅设置当前文本块的背景颜色吗?
您需要设置CellStyle
目标DataGridCell
而不是TextBlock
。
如果希望将此dataTrigger应用于dataGrid中的所有单元格,则将样式设置为on,DataGrid CellStyle
否则也可以对特定样式进行设置DataGridTextColumn CellStyle
。
数据网格
<DataGrid>
<DataGrid.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding MyViewModel.Modified}"
Value="True">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
DataGridTextColumn
<DataGrid>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell">
<Style.Triggers>
<DataTrigger Binding="{Binding MyViewModel.Modified}"
Value="True">
<Setter Property="Background" Value="Yellow"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句