【问题标题】:Implement INotifyPropertyChanged on models or viewmodels?在模型或视图模型上实施 INotifyPropertyChanged?
【发布时间】:2016-01-09 21:46:58
【问题描述】:

自从我投入 WPF 以来已经有一段时间了,所以我花一些时间重新熟悉一些方法。

关于这个MSDN Article - INotifyPropertyChanged 应该在你的模型类中实现。这有点令人困惑,因为在其他文章中我看到 INotifyPropertyChanged 正在视图模型上实现。有些人甚至在两者上都实施它。 实施细节只是特定于项目还是有“最佳实践”方式在 wpf 和 mvvm 中实施INotifyPropertyChanged

在向模型类添加更改通知时,我看到的一个问题是使用类似 ORM 的实体框架和数据库优先方法时。每次发生数据库更改并且您的模型都会更新,您在其中编写的任何代码都会被覆盖。我意识到我可能可以创建另一个部分类来缓解这种情况,但这似乎太麻烦和笨拙。

我的一般问题是:实施变更通知时的最佳做法是什么?在模型或视图模型上实现?

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    我的建议是在需要的地方使用它。您将在模型和视图模型上实现它。

    如果您的 ViewModel 中有一个要在 xaml 中跟踪的属性,则您不会创建一个模型来封装它,因为这太过分了。

    为 ViewModel 实现 INotifyPropertyChanged 绝对是 MVVM 模式中的常用方式。

    您可以在几个 MVVM 库中找到这种做法,例如 MVVM Light,它有一个从 ViewModel 继承的 ViewModelBase 类,以便让 INotifyPropertyChanged 实现事实上

    【讨论】:

      【解决方案2】:

      INotifyPropertyChanged 通常在整个 ViewModel 中使用,以通知 View 某处的某些值已更改,并且应该重新绑定到适用的数据。

      对于模型的更改:

      ViewModel 应该知道 Model 中的属性已更改仅仅是因为 ViewModel 更改了属性

      【讨论】:

        猜你喜欢
        • 2011-07-14
        • 1970-01-01
        • 2014-11-09
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 2015-12-05
        • 2010-11-18
        • 2011-10-02
        相关资源
        最近更新 更多