首页 文章

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

提问于
浏览
2

这是我在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

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

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

  • 0

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

    例如:

    enter image description here

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

相关问题