直接查看更新模型在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是一个常见错误。 正确的方法总是创建该ModelViewModel Model (列表元素)并绑定到它。

例如:

否则,您打开了将ModelB数据包含在ViewModelB的大门。

链接地址: http://www.djcxy.com/p/56181.html

上一篇: View Updating Model directly In WPF MVVM instead of ViewModel

下一篇: WPF DataBinding, MVVM and Routed Events