百度百科上这样解释Silverlight:
微软Silverlight是一个跨浏览器、跨客户平台的技术,能够设计、开发和发布有多媒体体验与富交互(RIA,Rich Interface Application)的网络交互程序。
根据公司的项目需要及公司的安排,最近我也在学习Silverlight相关内容,昨天还参加了公司的技术培训,在培训过程中给我们引入了MVVM的概念,不难猜想出MVVM是Model-View-ViewModel的简写.MVVM框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性揉合进去,以应对客户日益复杂的需求变化。
MVVM模式跟经典的MVP(Model-View-Presenter)模式很相似,除了你需要一个为View量身定制的model,这个model就是ViewModel。ViewModel包含所有由UI特定的接口和属性,并由一个 ViewModel 的视图的绑定属性,并可获得二者之间的松散耦合,所以需要在ViewModel 直接更新视图中编写相应代码。数据绑定系统还支持提供了标准化的方式传输到视图的验证错误的输入的验证。
对于传统的web开发而言,如果我们想改变页面控件中的内容,我们会在后台代码中【或其他方式】找到该控件,然后对控件重新赋值。而MVVM模式的项目的不同之处在于,我们只需要操作VM 便可以更改界面上的信息而无需对界面控件进行操作;简单来讲就是,当我们在View页面绑定了一个VM实体模型,首次加载时我们可以看到信息呈现在界面上,如果我们想对页面上的信息进行分页,那么我们只需要对vm进行操作,而不需要对界面上的控件再次进行绑定操作;微软是如何做到这一点的呢,在这里,运用了事件。看完下面的例子便可以从中得到答案。
新建Silverlight的应用程序,如下图所示:
DataGridResultItem.cs文件代码:
在这里,需要解释一下代码第一行的继承接口INotifyPropertyChanged;
INotifyPropertyChanged中定义了了一个事件PropertyChanged,这个事件在属性值被更改时触发,所以在这里我们要写该事件的实现;
DataGridResultCollection.cs中的代码:
MainPage.xaml中的代码:
MainPage.xaml.cs中的代码: