MVVM设计模式详解
1. MVVM概述
MVVM(Model-View-ViewModel)设计模式中,各层之间有着特定的关系。视图(View)通常只应了解视图模型(ViewModel),视图模型则只应了解模型(Model)。不过在实际应用中,这种规则并非总是被严格遵循。
1.1 各层目的
- 视图(View) :由XAML文件和代码隐藏类组成。理论上,使用MVVM时,视图的代码隐藏类应尽量少写代码,视图的逻辑和行为应尽可能放在视图模型中,追求“零代码隐藏”。但这并非MVVM模式的必要要求,有时在代码隐藏类中执行某些任务会更好,应专注于减少代码隐藏类的使用而非完全去除。视图通过Silverlight/XAML强大的数据绑定功能从视图模型中获取数据,视图触发的事件可以发布为命令供视图模型订阅,或者通过操作或行为调用视图数据上下文中对象(即视图模型)的方法。
- 模型(Model) :通常是包含从服务器获取的数据的对象,供视图使用。使用RIA服务与服务器通信时,模型对象就是域服务返回的实体。
- 视图模型(ViewModel) :是MVVM模式中的新元素,用于维护视图的状态。它有两个主要目的,一是向视图暴露数据,二是处理视图的逻辑和行为,满足视图的需求。一般假设每个视图对应一个视图模型,但视图和视图模型可以有多种配置关系。视图模型应被视为视图的模型,其状态通过属性维护,操作通过方法暴露,视图通过绑定到视图模型来消费数据并调用操作。