在模型或视图模型上实现INotifyPropertyChanged?

时间:2016-01-09 21:46:59

标签: wpf mvvm

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

如果你想在你的xaml中跟踪你的ViewModel中的属性,你就不会创建一个模型来封装它,因为它会有点过分。

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

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

答案 1 :(得分:0)

INotifyPropertyChanged通常在整个ViewModel中用于通知View某些值已经发生了变化,并且它应该重新绑定到适用的数据。

对于模型中的更改:

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