实施每个属性变更跟踪

时间:2012-07-03 20:19:27

标签: c#

我正在使用MVVM模式编写一个C#应用程序,我想知道在每个属性的基础上实现更改跟踪的最佳方法是什么。我目前已实现INotofyPropertyChanged并标记整个对象是否脏,但我必须实现的一些要求是他们希望能够通过UI上的文本框为每个已更改的属性显示图像。

基本上我的View Models都有一个私有字段,它是我的类,包含来自DataAccess Layer的数据。所以基本上一个类看起来像这样:

private BusinessObj _data


public Name
{
    get{ return _data.Name;}
    set
    {
       if(_data.Name != value)
       {
           _data.Name = value;
           PropertyChanged("Name");
           IsDirty = true;
       }
    }
}

我的数据访问层基本上是序列化和反序列化XAML配置文件以配置我们的产品。

1 个答案:

答案 0 :(得分:0)

您可以在模型类中使用ObservableCollection,并在可观察业务数据集更改时让您的UI订阅事件。

模型视图中的

public class BusinessObjList : ObservableCollection<BusinessObj>
{
   public BusinessObjList() : base()

   public void AddBusinessObj
   {
       // your own manipulation
   }
}
UI中的

BusinessObjList BL = new BL();
BL.CollectionChanged += new NotifyCollectionChangedEventHandler(bl_CollectionChanged);

static void bl_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
   // handle the change in UI.
}