2012-01-18 71 views
13

假设我有一个视图。这是DataContext绑定到ViewModelViewModel公开Model属性。视图应该间接绑定到MVVM模型中的属性吗?

  • 是否MVVM喜欢在View字段绑定到属性在Model(例如Binding Path=Model.FirstName)?
  • Model应该执行INotifyPropertyChanged

我的团队在WPF中使用Prism和MVVM。很多棱镜示例间接绑定到Model。我个人怀疑这是正确的做法。我认为模型中的东西应该会暴露行为(不只是属性级别),并且应该通过呃event来传达重要事件 - 客户可以订阅或不订阅。

我认为,通过让域/模型对象实现INotifyPropertyChanged以某种方式向世界表明它是UI/UX感知,并且在ViewModel中引入了一些冗余。

您认为如何?什么适合你?明确区分View/ViewModel/Model还是Prism示例使用的混合?

+0

考虑到你不能绑定到字段,没有。属性是另一回事... – Will 2012-01-18 16:57:13

+0

好点..... – 2012-01-26 21:08:17

回答

21

我见过很多人在他们的Model中直接实施INotifyPropertyChanged,同样我也看到有人在ViewModel中也这样做。

我更喜欢并在ViewModel中这样做(执行INotifyPropertyChanged)。我同意你的意见,它有时在ViewModel中造成冗余,但我更愿意在ViewModelModel之间做出明确的区分/区分,以及它们的目的应该是什么。对我来说,Model就是字面上的Model。这只不过是我的Business Data的代表。对我来说,它不应该导致View(通过通知属性更改事件)的任何更改。 View应与ViewModelViewModel应该使用Model。我不喜欢查看直接影响Model。我不喜欢使用Model.FirstName,因为对我来说,它好像跟MMVM告诉View什么是Model

+0

谢谢哈里斯。我同意。 – 2012-01-18 09:42:16

+0

+1,我也非常赞同。 – ken2k 2012-01-18 10:16:15

+2

我有10个不同的模型实例,每个实例都有20个属性,在ViewModel中显示所有thos属性会不会是一个痛苦的屁股? – 2013-05-31 17:41:15