视图是否应间接绑定到 MVVM 中模型中的属性
本文关键字:MVVM 模型 属性 绑定 是否 视图 | 更新日期: 2023-09-27 18:20:33
假设我有一个视图。 它DataContext
绑定到ViewModel
,ViewModel
公开Model
属性。
- 将
View
中的字段绑定到Model
中的属性是否MVVM
喜欢(例如Binding Path=Model.FirstName
(?Model
应该实施INotifyPropertyChanged
吗?
我的团队正在WPF中使用Prism和MVVM。 许多棱镜示例间接绑定到Model
。 我个人怀疑这是正确的方法。 我认为模型中的内容应该暴露行为(不仅仅是在属性级别(,并且应该通过,呃,event
s传达重要事件 - 客户可以订阅或不订阅。
我认为,通过让域/模型对象实现INotifyPropertyChanged
以某种方式向世界表明它是 UI/UX 感知的,并且在 ViewModel
中引入了一些冗余。
你觉得怎么样? 什么对你有用? Prism 示例中使用的 View
/ViewModel
/Model
或混合体之间的明确区别?
我看到很多人直接在他们的Model
中实现INotifyPropertyChanged
,同样我也看到人们在ViewModel
中这样做。
我更喜欢并在ViewModel
中执行此操作(实现INotifyPropertyChanged
(。我同意你的看法,它有时会在ViewModel
中造成冗余,但我更喜欢ViewModel
和Model
之间的明确区分/分离以及它们的目的应该是什么。对我来说,Model
只是字面上的Model
.它只是我Business Data
的代表性,仅此而已。对我来说,它不应该引起View
的任何变化(通过通知属性更改事件(。 View
应该与ViewModel
交谈,ViewModel
应该使用Model
。我不喜欢视图直接影响Model
。我不喜欢使用Model.FirstName
,因为对我来说,告诉View
Model
中的内容似乎违背了MMVM