直接查看更新模型在WPF MVVM中而不是ViewModel中
这是我学习MVVM在WPF中的链接,我有一个问题: - https://www.tutorialspoint.com/mvvm/mvvm_first_application.htm
WPF窗口的DataContext被设置为一个VIEWMODEL对象。 List-DataTemplate的Itemsource被设置为来自同一个VIEWMODEL对象的List。 该模型包含INotifyPropertyChanged的实现。 当我更新视图时,MODEL的INotifyPropertyChanged被触发,即VIEW直接更新MODEL,而直到现在我已经理解的是,VIEW仅通过绑定和命令与VIEWMODEL交互,而不直接与MODEL交互。它始终是ViewModel它与Model交互以获取View的数据。但在这里,View直接更新模型。由于我的知识有限,这使我感到困惑。 请指导。
如果视图模型通过属性公开模型,则视图实际上可以通过该属性直接绑定到模型。 这并没有真正违反MVVM模式,并且非常好,特别是如果模型类实现INotifyPropertyChanged
接口。 如果是这样,你可以说模型是一种(孩子)视图模型。
诸如域对象或服务之类的“真实”模型不应该具有关于WPF的任何知识,以及如何将更改通知提交给视图。 因此,直接绑定到这些对象是很有意义的,但如果您的模型是“WPF感知”并实现与视图相关的接口,则可以将它们绑定到这些接口,而不会有任何问题。
将Model
直通列表绑定到View
是一个常见错误。 正确的方法总是创建该Model
的ViewModel
Model
(列表元素)并绑定到它。
例如:
否则,您打开了将ModelB
数据包含在ViewModelB
的大门。
上一篇: View Updating Model directly In WPF MVVM instead of ViewModel