在MVVM中,视图模型还是模型应该实现INotifyPropertyChanged?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (12)

我已经研究过的大多数MVVM示例都有模型实现INotifyPropertyChanged。

我仍然在认知地将MVVM概念组合在一起,所以我不知道是否:

  • 必须将INotifyPropertyChanged放在ViewModel中,才能使CommandSink工作
  • 这只是正常的反常,并不重要
  • 应该始终使用ModelImplementINotifyPropertyChanged,如果从代码示例开发到应用程序,这只是一个错误,需要纠正

其他人在MVVM项目上的经验是什么?

提问于
用户回答回答于

我会说完全相反,我总是把我的INotifyPropertyChanged在我的视图模型上--你真的不想用WPF特有的特性来污染你的模型,比如INotifyPropertyChanged,这些东西应该放在视图模型中。

用户回答回答于

我强烈反对这样的概念,即模型不应该实现INotifyPropertyChanged.这个界面不是UI特定的!它只是通知了一个变化。事实上,WPF大量使用它来识别更改,但并不意味着它是一个UI接口。我会把它与以下评论进行比较:“轮胎是汽车附件”。当然可以,但自行车、公共汽车等也使用它。总之,不要把这个界面当作UI。

尽管如此,这并不意味着我相信提供通知的模型。事实上,作为经验法则,模型不应该实现这个接口,除非它是必要的。在大多数情况下,没有服务器数据被推送到客户端应用程序,模型可能是过时的。但如果听了金融市场的数据,我就不明白为什么模型不能实现接口。举个例子,如果我有一个非UI逻辑,比如一个服务,如果收到一个出价或为一个给定的价值询问价格,它发出一个警告-通过电子邮件-或下订单,那么这可能是一个可能的干净的解决方案。

扫码关注云+社区