现在的位置: 首页 > 综合 > 正文

Silverlight的MVVM模式

2012年09月03日 ⁄ 综合 ⁄ 共 690字 ⁄ 字号 评论关闭

M是模型层,实际上就是客户端得数据服务层,而V是页面,即视图层,VM是视图的模型层,也可以看做是M和V之间的桥接层。

我们知道在数据库编程中,特别是Delphi中的数据库编程中,数据感知控件一定令人印象深刻:界面控件只要设置一个数据源(DataSource),然后设定本控件要绑定的字段,那么这个控件与数据集之间就建立起了一个联系,数据集的数据发生变化会立即反馈到界面控件,而控件中的值如果发生改变(用户输入或修改),也可以自动更新到数据集中。

Silverlight页面控件的数据绑定方式跟上述数据感知控件很类似,当然,微软做了很大的改进:
1)所有的UI控件都可以数据感知(几乎每个控件都有一个DataContext属性,这个属性其实就类似于DataSource);
2)  数据源不再局限于数据集合,可以是任何可以访问的对象(包括对象或对象集合)(只要这个属性具有可访问的属性)。

上面的这种特性,可以叫做对象感知(数据集感知的一种改进),之所以在这里提这个特性,是因为这个特性是MVVM模式得以存在的关键技术。具体的做法可以参考微软的一些文档,实在不行可以反编译他们的dll嘛。下面我们继续看这个模式:
VM就是V的数据源,这样,V的数据绑定和V的事件绑定就从手工在V的后台代码书写,变成了在XAML中设置绑定属性即可。这样V和VM就变成了松散耦合。VM和M的关系就是M是VM的数据和服务的提供者。因为VM,V和M就不再直接耦合了。这样有利于客户端的分工与合作。

一般来讲在MVVM中,一个VM可以供多个V,即一个VM可以有多个展示的方式,在这个方面,MVVM跟MVC模式有一样的效用。

 

抱歉!评论已关闭.