c# - 实现每个属性更改跟踪

标签 c#

我正在使用 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/

相关文章:

c# - 获取 ASP :Menu to center in the middle of the page

c# - 轮询 Oracle 数据库以获取更改

c# - 找出字符串中最长序列的长度

c# - 选角问题 |我正在尝试返回类似的类型

c# - 从动态类型中获取有用的调试信息

c# - 如何关闭父窗体中以前的 mdi 子项

c# - 从 c# 调用带有变体类型参数的 delphi dll

c# - 即使在 C# 中设置 web.config 后仍然得到 (413) "Request Entity Too Large"

c# - "You cannot save a class that does not contain a property that represents the item ID"当 GlassCast(ing) 分支模板项时,为什么?

c# - 如何使用多线程C#实现Eratosthenes筛网?