mvvm - 另一个 MVVM 问题......我的理解是否正确?

标签 mvvm

对不起,如果这是重复的,虽然它不是“什么是 MVVM”,而是“这是 MVVM”,我已经阅读了很多,并且认为我已经对它是什么有了基本的了解,我有我自己的“单行”,因此,关于我如何解释它,但要确保它是正确的,然后再将它牢牢地记在我的脑海中,

本质上;模型是纯数据 - 没有方法,每个模型有一个 ViewModel,它保存对模型的引用 - 它执行对模型数据的所有更改,最后 View 将保存一个(或多个)ViewModel 引用和格式& 显示 ViewModel 提供的数据。

(不是在教程,博客等的链接之后,只是一个是,或者不进行调整就可以了,因为如果没有,我将不得不再次重新阅读所有内容:))

最佳答案

不完全 - 至少,不像我会完全定义它。

模型不必是纯数据。模型是您的应用程序中完全特定于领域的部分,并且没有“与表示相关”的信息。

这通常包括所有特定于领域的数据,但也包括可能是纯业务逻辑和数据访问等的方法。任何特定于业务逻辑和流程的东西,而不是“显示”的一部分,都是模型的一部分.

此外,尽管“每个模型一个 ViewModel”是最常见的工作形式,但有时您可能会通过多个 ViewModel 公开一个“模型”类。这可能很有用,例如,如果您尝试仅向设计人员公开模型的一部分,因为它允许您创建较小的 ViewModel 类。 ViewModel 调整模型以与 View 一起工作 - 如果不需要整个模型,则可以通过仅使用所需的部分来使该适配器更小(并且更易于测试、维护等)。

就我个人而言,我更喜欢从“每个 View 一个 ViewModel”的角度来考虑,因为 ViewModel 可以适应一个或多个模型,以便与给定的 View 适本地工作,但即便如此,有时在同一 View 中交换一个 ViewModel 也是有帮助的查看以更改内容。

关于mvvm - 另一个 MVVM 问题......我的理解是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3283651/

相关文章:

c# - 在wpf和mvvm中使用后台计算实现用户界面命令

wpf - WPF ListBox项目折叠数据触发不起作用

android - 在MVVM Android中使用Firebase注销的正确方法

wpf - 不反射(reflect)在 UI 上的任务更新数据绑定(bind) OC

c# - 创建文本框问题?

c# - MVVM Silverlight 数据网格 : Binding Columns Collection

WPF 点击用户控件

c# - 如何仅从 ViewModel 以编程方式突出显示 DataGrid 行?

c# - UWP:如何将参数传递给导航页面的ViewModel?

c# - 如何确保 ViewModel 属性在再次更改其值之前已绑定(bind)在 View 上?