首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在MVVM中,ViewModel或模型应该实现INotifyPropertyChanged吗?

在MVVM中,ViewModel或模型应该实现INotifyPropertyChanged吗?
EN

Stack Overflow用户
提问于 2009-04-21 11:57:01
回答 17查看 52.4K关注 0票数 170

我使用过的大多数INotifyPropertyChanged.示例都让模型实现了INotifyPropertyChanged,但在Josh Smith's CommandSink example 中,ViewModel实现了 MVVM

我还在整理MVVM的概念,所以我不知道是否:

  • 您必须将INotifyPropertyChanged放在ViewModel中才能使CommandSink工作
  • 这只是规范的一种偏差,并不重要
  • 您应该始终让模型实现INotifyPropertyChanged,这只是一个错误,如果这是从代码示例开发到应用程序< code >H216

你参与过的MVVM项目中,其他人的经验是什么?

EN

回答 17

Stack Overflow用户

回答已采纳

发布于 2009-04-21 12:09:12

我会说恰恰相反,我总是把我的INotifyPropertyChanged放在我的ViewModel上-你真的不想用像INotifyPropertyChanged这样的WPF特定功能来污染你的模型,那些东西应该放在ViewModel中。

我相信其他人不会同意,但这就是我的工作方式。

票数 112
EN

Stack Overflow用户

发布于 2010-05-11 00:49:14

我强烈反对模型不应该实现INotifyPropertyChanged的观点。此界面不是特定于UI的!它只是简单地通知一个变化。事实上,WPF大量使用它来识别更改,但这并不意味着它是一个UI界面。我会把它比作下面的评论:“轮胎是汽车配件”。当然是,但是自行车、公交车等也用它。:总之,不要把那个界面当成是UI的东西。

话虽如此,但这并不一定意味着我认为Model应该提供通知。实际上,作为经验法则,模型不应该实现此接口,除非有必要。在大多数情况下,没有服务器数据被推送到客户端应用程序,模型可能会过时。但如果听取金融市场数据,那么我不明白为什么模型不能实现接口。例如,如果我有一个非UI逻辑,比如一个服务,当它收到给定值的出价或要价时,它会发出一个警报(例如,通过电子邮件)或下单?这可能是一个干净的解决方案。

然而,有不同的实现方式,但我总是主张简单,避免冗余。

哪个更好?定义集合上的事件或视图模型上的属性更改并将其传播到模型,还是让视图本质上更新模型(通过视图模型)?

无论何时你看到有人声称“你不能做这个或那个”,这是他们不知道自己在说什么的信号。

这真的取决于你的情况,事实上MVVM是一个有很多问题的框架,我还没有看到通用的MVVM实现。

我希望我有更多的时间来解释MVVM的多种风格和一些常见问题的解决方案--主要是由其他开发人员提供的,但我想我必须改天再做。

票数 151
EN

Stack Overflow用户

发布于 2009-05-04 12:35:06

在M-V-VM中,ViewModel始终(型号并非始终)实施INotifyPropertyChanged

查看http://blogs.msdn.com/llobo/archive/2009/05/01/download-m-v-vm-project-template-toolkit.aspx提供的M-V-VM项目模板/工具包。它使用DelegateCommand进行命令,对于您的M-V-VM项目来说,它应该是一个很好的入门模板。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/772214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档