我正在使用 MVVM 模式编写一个 C# 应用程序,我想知道在每个属性的基础上实现更改跟踪的最佳方法是什么。我目前实现了 INotofyPropertyChanged 并标记整个对象是否脏,但我必须实现的一些要求是他们希望能够通过 UI 上的文本框为每个已更改的属性显示图像。
基本上我的 View 模型都有一个私有(private)字段,它是我的类,其中包含来 self 的数据访问层的数据。所以基本上一个类看起来像这样:
private BusinessObj _data
public Name
{
get{ return _data.Name;}
set
{
if(_data.Name != value)
{
_data.Name = value;
PropertyChanged("Name");
IsDirty = true;
}
}
}
我的数据访问层基本上是序列化和反序列化 XAML 配置文件以配置我们的产品。
最佳答案
您可以在您的模型类中使用 ObservableCollection
,并让您的 UI 在可观察的业务数据集合发生变化时订阅该事件。
在模型 View 中
public class BusinessObjList : ObservableCollection<BusinessObj>
{
public BusinessObjList() : base()
public void AddBusinessObj
{
// your own manipulation
}
}
在用户界面中
BusinessObjList BL = new BL();
BL.CollectionChanged += new NotifyCollectionChangedEventHandler(bl_CollectionChanged);
static void bl_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// handle the change in UI.
}
关于c# - 实现每个属性更改跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11318559/