帮助理解MVVM模式?

时间:2011-08-26 10:39:26

标签: wpf mvvm prism viewmodel

我正在努力使用WPF和与MVVM模式密切相关的Prism框架。我已经准备好了很多关于MVVM的不同描述,例子和讨论,每一个都略有不同,让我有点困惑。

我的理解如下:

MVVM模式有3个部分: -

  • 模型 - 包含应用程序数据/信息的类。
  • 视图 - 应用程序的可视元素。
  • ViewModel - 与可视元素关联的逻辑,状态和其他行为。它从模型中获取数据并将其公开(可能带有一些数据转换/格式化),以便View可以直接使用它。

我不确定的是:

  1. 这3个部分是否涵盖了应用程序的每个部分?或者这些应用程序的部分可以超出这3个部分吗?
  2. 是ViewModel还是负责填充模型的其他部分?
  3. 提前致谢

2 个答案:

答案 0 :(得分:3)

  1. 绝对不是。除非他们这样做。如果您的应用程序很简单,那么可以在View,ViewModel或Model中处理所有内容。如果您的应用程序很复杂,并且最佳实践要求您将逻辑分解为它们自己的类型(通信逻辑,存储库逻辑等),那么就没有阻止您。 MVVM只关注View中的以视图为中心的逻辑,ViewModel中的应用程序逻辑,以及存储两者之间传输信息的方法。

  2. ViewModel的任务是解释用户操作并准备模型中的逻辑结果,以便View可以向用户显示此信息。在某些情况下,模型本身具有某种逻辑以便它可以响应用户操作。然而,根据我的经验,这种迷你ViewModel-Model设计是对缺乏经验的开发人员的设计决策的反应。一旦你获得了MVVM的真正悬念,除了验证逻辑之外,你通常不必(或想要)在模型中放置任何代码。

答案 1 :(得分:0)

  1. 将Model,ViewModel和View视为分别处理业务,应用程序流和表示的逻辑层。例如,ViewModel 可以将复杂或可重用的UI交互委托给与任何特定视图不对应但仍属于ViewModel layer 的单独服务。

  2. 是的,ViewModel位于UI和Model之间。