假设我有一个视图。它是DataContext
绑定到ViewModel
,ViewModel
公开了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示例使用的混合物之间有明显区别吗?
答案 0 :(得分:23)
我见过很多人直接在他们的INotifyPropertyChanged
中实施Model
,同样我也看到有人在ViewModel
中进行此操作。
我更喜欢并在INotifyPropertyChanged
中执行此操作(实施ViewModel
)。我同意你的意见,它有时会在ViewModel
中创建冗余,但我更喜欢在ViewModel
和Model
之间明确区分/分离以及它们的目的应该是什么。对我来说Model
只是Model
。它只是我Business Data
的代表而已。对我来说,它不应该导致View
的任何变化(通过通知属性更改事件)。 View
应与ViewModel
对话,ViewModel
应与Model
对话。我不喜欢View直接影响Model
。我不喜欢使用Model.FirstName
,因为对我来说,通过告诉MMVM
View
Model