View应该间接绑定到MVVM中的Model中的属性吗?

时间:2012-01-18 09:19:44

标签: c# wpf mvvm prism

假设我有一个视图。它是DataContext绑定到ViewModelViewModel公开了Model属性。

  • MVVM是否要将View中的字段绑定到Model中的属性(例如Binding Path=Model.FirstName)?
  • Model应该实施INotifyPropertyChanged吗?

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

我认为通过让域/模型对象实现INotifyPropertyChanged以某种方式告诉全世界它的UI / UX意识并且在ViewModel中引入了一些冗余。

你怎么看?什么对你有用? View / ViewModel / Model或Prism示例使用的混合物之间有明显区别吗?

1 个答案:

答案 0 :(得分:23)

我见过很多人直接在他们的INotifyPropertyChanged中实施Model,同样我也看到有人在ViewModel中进行此操作。

我更喜欢并在INotifyPropertyChanged中执行此操作(实施ViewModel)。我同意你的意见,它有时会在ViewModel中创建冗余,但我更喜欢在ViewModelModel之间明确区分/分离以及它们的目的应该是什么。对我来说Model只是Model。它只是我Business Data的代表而已。对我来说,它不应该导致View的任何变化(通过通知属性更改事件)。 View应与ViewModel对话,ViewModel应与Model对话。我不喜欢View直接影响Model。我不喜欢使用Model.FirstName,因为对我来说,通过告诉MMVM View

中的内容,似乎违背了Model