【发布时间】:2018-06-21 11:09:42
【问题描述】:
所以我有一个类(称为 DataClass)来处理一些应用程序数据。该类实现了INotifyPropertyChanged 接口。目前,我在 ViewModelBase 类中创建了这个类的 2 个静态实例(DataRx 和 DataTx),我想分别在每个类上引发 PropertyChanged 事件。
在 ViewModel 上的实现是:
DataRx.PropertyChanged += DataRx_PropertyChanged;
DataTx.PropertyChanged += DataTx_PropertyChanged;
问题是,当我更改 DataRx 对象的任何 DataClass 属性时,DataRx_PropertyChanged 和 DataTx_PropertyChanged 方法都被激活,而不仅仅是 DataRx_PropertyChanged。
如何在所需对象上激活事件?
编辑:
接口实现如下:
public event PropertyChangedEventHandler PropertyChanged;
protected bool SetProperty<T>(ref T field, T value, [CallerMemberName]string name = null)
{
if (Equals(field, value))
{
return false;
}
field = value;
OnPropertyChanged(name);
return true;
}
protected void OnPropertyChanged([CallerMemberName]string name = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
【问题讨论】:
-
当在 DataClass 的一个实例上设置属性触发另一个实例的 PropertyChanged 事件时,您的实现有问题。
标签: c# wpf mvvm data-binding