2

WPF的MVVM设计模式中Model、View、ViewModel对象的基本定义是什么?他们的职责是什么,他们每个人应该做什么和不应该做什么?

4

1 回答 1

8

模型:

  1. 代表数据
  2. 实体。
  3. 模型类是封装应用程序数据和业务逻辑的非可视类。
  4. 他们负责管理应用程序的数据,并通过封装所需的业务规则和数据验证逻辑来​​确保其一致性和有效性。
  5. 模型类不直接引用视图或视图模型类,也不依赖于它们的实现方式
  6. 模型类通常通过和接口提供属性和集合更改通知事件。INotifyPropertyChangedINotifyCollectionChanged
  7. 这使它们可以轻松地在视图中绑定数据。
  8. 表示对象集合的模型类通常派生自ObservableCollection<T>该类。
  9. 模型类通常通过IDataErrorInfoINotifyDataErrorInfo接口提供数据验证和错误报告。
  10. 模型类通常与封装数据访问和缓存的服务或存储库结合使用。
  11. 不需要知道它从哪里获取数据,即从 WCF 服务获取数据。WCF RIA 服务等
  12. 可能包含验证。

看法:

  1. 视图是一个可视元素,例如窗口、页面、用户控件或数据模板。
  2. 视图定义视图中包含的控件及其外观、视觉布局和样式。
  3. 视图通过其 DataContext 属性引用视图模型。
  4. 视图中的控件是绑定到ViewModel公开的属性和命令的数据。
  5. 视图可以自定义视图和视图模型之间的数据绑定行为。例如,视图可以使用值转换器来格式化要在 UI 中显示的数据,或者它可以使用验证规则来向用户提供额外的输入数据验证。
  6. 视图定义和处理 UI 视觉行为,例如可能由视图模型中的状态更改或通过用户与 UI 的交互触发的动画或转换。
  7. 视图的代码隐藏可以定义 UI 逻辑以实现在 XAML 中难以表达或需要直接引用视图中定义的特定 UI 控件的视觉行为。

视图模型:

  1. ViewModel 是一个非可视类,不派生自任何 WPF 或 Silverlight 基类。
  2. 它封装了支持应用程序中的用例或用户任务所需的表示逻辑。
  3. ViewModel 可独立于视图和模型进行测试。
  4. ViewModel 通常不直接引用视图。它将具有绑定到视图的 UI 友好实体、UI 状态、操作和公共属性。
  5. 实现了视图可以数据绑定的属性和命令
  6. 它通过和接口通过更改通知事件通知视图任何状态更改。INotifyPropertyChangedINotifyCollectionChanged
  7. 使用各种命令与 View 交互。
  8. 视图模型协调视图与模型的交互
  9. 它可以转换或操作数据,以便视图可以轻松地使用它,并且可以实现模型上可能不存在的其他属性。
  10. 它还可以通过IDataErrorInfoINotifyDataErrorInfo接口实现数据验证。
  11. 视图模型可以定义视图可以直观地向用户表示的逻辑状态。
  12. 调用服务以在 MVVM 三元组之外进行通信。

来源:http ://code.msdn.microsoft.com/Design-Patterns-MVVM-Model-d4b512f0

于 2012-10-31T10:40:20.470 回答