直接在WPF MVVM而不是ViewModel中查看更新模型

时间:2017-04-24 09:51:13

标签: wpf mvvm

这是我在WPF中学习MVVM的链接,我有一个问题: - https://www.tutorialspoint.com/mvvm/mvvm_first_application.htm

WPF窗口的DataContext设置为VIEWMODEL对象。 List-DataTemplate的Itemsource从同一个VIEWMODEL对象设置为List。 该模型包含INotifyPropertyChanged的实现。 当我更新视图时,MODEL的INotifyPropertyChanged被触发,即VIEW直接更新MODEL,而我迄今所理解的是VIEW仅通过Bindings和Commands与VIEWMODEL交互,而且从不与MODEL DIRECTLY交互。它始终是ViewModel它与模型交互以获取View的数据。但是在这里,View正在更新Model DIRECTLY。由于我的知识有限,这让我感到困惑。 请指导。

2 个答案:

答案 0 :(得分:0)

如果视图模型通过属性公开模型,则视图实际上可以通过此属性直接绑定到模型。这并没有真正违反MVVM模式,并且非常好,特别是如果模型类实现了INotifyPropertyChanged接口。如果是,您可以说该模型是一种(子)视图模型。

A"真实"诸如域对象或服务之类的模型不应该具有关于WPF的任何知识以及如何将更改通知提交到视图。因此,直接绑定到这些对象很少有意义,但如果你的模型是" WPF意识到"并实现与视图相关的接口,您可以毫无问题地绑定它们。

答案 1 :(得分:0)

Model直通列表绑定到View是一个常见错误。正确的方法是始终创建ViewModel Model(列表元素)并绑定到它。

例如:

enter image description here

否则,您正打开包含应存储在ModelB中的ViewModelB数据的大门。