首页 文章

模型在MVVM中的作用

提问于
浏览
35

我已经阅读了一些关于(数据)模型在MVVM模式中的作用的文章 . 但是,我仍然无法弄清楚模型中的内容 .

该模型应该实现INotifyPropertyChanged吗?如果是这样,VM和模型之间有什么区别?

如果没有,模型中的更改将不会通知VM及其发生的视图 . 所以 - 考虑到逻辑进入模型,很明显它应该通知ViewModel它的一些变化 . 但是,在两个类中实现INotifyPropertyChanged并不奇怪吗?

非常感谢你!

3 回答

  • 5

    您的一条评论:

    对我来说这个模型实现了INotifyPropertyChanged似乎很奇怪,这在我看来是一个与UI相关的类

    更改在各种上下文中使用的通知,而不是UI上下文 . 例如,您可能希望附加一段诊断代码,该代码将特定更改记录到 TextWriter . 如果对象实现了更改通知,则无需修改底层模型对象即可轻松完成此操作 .

    但即使在仅用于更新UI的应用程序中,这种模式仍然有意义 . 因为通过事件处理更改通知,所以引发事件的对象与处理它的对象分离 . 您的模型不知道,也不需要知道哪种UI正在使用它 . 它只是说,“假设有一个用户界面,我需要告诉它,无论它是什么,这个属性的 Value 只是改变了 . ”

    那为什么会有一个视图模型呢?为什么不直接绑定到模型?实际上,如果它实现了更改通知,您可以直接绑定到模型 . 在许多简单的WPF应用程序中,当您需要将UI与基础业务逻辑分离并且您开始关注是否违反单一责任原则时,不会出现需要视图模型的情况 . .

  • 9

    该模型实现了您的业务逻辑 . 视图模型在视图(某种形式的UI,例如web,winform,CLI)中装饰您的业务逻辑,以便显示它并与之交互 . 所以,不,我不会说你的模型应该实现 INotifyPropertyChanged ,除非它作为你的核心业务逻辑的一部分 .

  • 19

    在某些情况下,Model必须实现INotifyPropertyChanged . 想象一下,您正在为ICQ编写客户端或类似的东西 . ViewModel应该怎么知道,有人给你发了一条消息?

    Difference between Model and ViewModel:

    ViewModel仅简化模型的输出 . 如果模型非常简单,则不需要ViewModel .

相关问题