WPF DataGrid不更新只读值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WPF DataGrid不更新只读值相关的知识,希望对你有一定的参考价值。
我有一个List<MyClass>
与以下数据项:
class MyClass
{
public double MyValue { get; set; } = 0;
public double MyReadonlyValue
{
get { return MyValue +1; }
}
}
以下数据绑定DataGrid
:
<DataGrid ItemsSource="{Binding MyList}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=MyValue}" Header="myvalue"/>
<DataGridTextColumn Binding="{Binding Path=MyReadonlyValue}" Header="myreadonlyvalue" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
如果我更新value列上的值,readonly列值不会更新,但如果我创建一个调用的按钮:
MyDataGrid.Items.Refresh();
myreadonly值正确更新。
但我想在myValue编辑操作结束时更新值(如CellEditEnding
),在编辑期间我无法调用Refresh
函数。我该怎么办?
谢谢。
答案
当INotifyPropertyChanged
设置为新值时,实施PropertyChanged
并为MyReadonlyValue
属性引发MyValue
事件:
class MyClass : INotifyPropertyChanged
{
private double _myValue;
public double MyValue
{
get { return _myValue; }
set
{
_myValue = value;
NotifyPropertyChanged();
NotifyPropertyChanged(nameof(MyReadonlyValue));
}
}
public double MyReadonlyValue
{
get { return MyValue + 1; }
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
以上是关于WPF DataGrid不更新只读值的主要内容,如果未能解决你的问题,请参考以下文章
DataGrid 数据绑定/更新中的 WPF 组合框不起作用