gpt4 book ai didi

c# - 使用触发器绑定(bind) WPF Datagrid 单元格背景颜色

转载 作者:可可西里 更新时间:2023-11-01 08:36:29 41 4
gpt4 key购买 nike

我希望 WPF 数据网格单元格的背景颜色在内容被修改时改变颜色。每个单元格背后都有一个 ViewModel 对象,该对象包含以下属性 - Value、OriginalValue 和 Modified。当用户编辑单元格内容时,这会通过数据绑定(bind)自动触发 Amount 属性。然后,此属性 setter 将其与原始值进行检查,并将 bool 值 Modified 属性分别设置为 true 或 false,通知这些属性的绑定(bind)进行更新。

到目前为止,我已经通过 DataGridTextColumn 的 ElementStyle 属性上的样式实现了部分结果,如下所示

<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>

这会更新文本内容的背景颜色,但这只是单元格中心的一小块区域。我希望整个单元格更新它的背景颜色,而不仅仅是文本 block 属性。

我能否修改上述触发器以在可视化树中向上搜索以找到父 DataGridCell 并为其设置 Background 属性,而不是仅设置当前文本 block 的背景颜色?

最佳答案

您需要将 CellStyle 设置为以 DataGridCell 为目标,而不仅仅是 TextBlock

如果您希望此 dataTrigger 应用于 dataGrid 中的所有单元格,请在 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>

关于c# - 使用触发器绑定(bind) WPF Datagrid 单元格背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841649/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com