在XAML中,我有一个在DataGrid中定义为如下的列:
我的问题是,如果我编辑一个单元格并结束编辑,样式不会更新。只有当新输入的值移动到另一行(由于排序)时,背景的有条件着色才会应用。但是,如果编辑后的对象显示在
为此对象实现
有没有一种方法告诉
<DataGridTextColumn Header="Name" Binding="{Binding Name}">
<DataGridTextColumn.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource
{x:Type DataGridCell}}" >
<Setter Property="Background" Value="{Binding
Converter={StaticResource NameToBrushConverter}}"/>
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
NameToBrushConverter
会在Name
列和FirstName
列的内容相同时返回一种颜色,否则它将返回DependencyProperty.UnsetValue
。我的问题是,如果我编辑一个单元格并结束编辑,样式不会更新。只有当新输入的值移动到另一行(由于排序)时,背景的有条件着色才会应用。但是,如果编辑后的对象显示在
DataGrid
的同一行中,则背景颜色不会更新,直到我点击排序为止。只要该单元格移动到另一行,背景就会根据转换器值进行更新。为此对象实现
INotifyPropertyChanged
是没有帮助的。有没有一种方法告诉
GridView
在编辑单元格后重新评估样式?dataGrid.Items.Refresh();
调用刷新函数可以解决问题,但是哪个事件是触发刷新的正确事件呢?我尝试在CellEditEnding
中使用它,但是出现了一个异常:Refresh
不允许在AddNew-
或EditItem
事务中使用。