APP下载

Silverlight和WPF 环境下ObservableCollection类与界面控件同步的研究

2014-04-19刘庆生

石家庄学院学报 2014年3期
关键词:计算机系黄石数据源

刘庆生

(黄石职业技术学院 计算机系,湖北 黄石 435000)

Silverlight和WPF 环境下ObservableCollection类与界面控件同步的研究

刘庆生

(黄石职业技术学院 计算机系,湖北 黄石 435000)

Silverlight技术是微软推出的一个跨平台的浏览器插件,丰富的交互功能得到了业界的广泛赞誉.在页面呈现方面,Silverlight与传统的Web刷新机制完全不同.其中,ObservableCollection类是开发人员用于与界面交互的常用手段.使用ObservableCollection构建一个类,通过与List类对比来诠释Silverlight技术中如何做到界面控件与后台数据的同步.

Silverlight;ObservableCollection;界面控件;同步

0 引言

Microsoft Silverlight是当今一种新的Web呈现技术,能在各种平台上运行,它为用户提供了统一而丰富的用户体验[1],借助这个技术,无论是在浏览器内还是在桌面操作系统中,都可以实现内容丰富、视觉效果绚丽的交互式体验.它的出现,完善了企业应用开发,将成为下一代企业应用程序的解决方案.

1 通过Silverlight实现刷新页面的优势

刷新页面是经常性的操作,实现这种操作的方法很多,但是通过Silverlight实现更有优势.因为Silverlight有着类似C/S模式的特点,开发者不需要考虑使用Ajax来设计Web界面的局部刷新.ObservableCollection类是Microsoft.NET Framework一个特殊部件[2],可以让界面与后台数据源的变化保持一致.它可以在添加、删除、移动、刷新或替换集合中的项目时引发 CollectionChanged事件,还可以在窗口以外的代码修改基础数据时做出反应.下面,在Visual Studio 2010环境下使用C#为编程语言,通过一个实例来理解这一技术.

2 实例总体分析

先提出设计目标.在一个DataGrid控件中,通过修改产品的数量,能够自动更新金额的界面值.

打开Visual Studio 2010,点击新建“项目”->“Silverlight”->“Silverlight应用程序”,然后输入项目名称后单击“确定”.最后,在默认的页面MainPage.xaml中添加一个DataGrid控件,调整DataGrid的大小和位置即完成了界面控件的设计.下面是两种方案的公共设计部分.

2.1 方案的公共设计部分

2.1.1 界面设计主要代码如下(DataGrid1的Xaml代码):

2.1.2 后台设计主要代码(Xaml.cs)

3 具体方案的分析

3.1 使用List〈T〉数据作为DataGrid的数据源

建立Sale类,代码如下:

在这种情况下,修改界面上的数量的值,金额不会发生变化.虽然我们通过设置断点来检查金额变量的值已经发生变化,但是界面依然没变化,这是因为List对象没有通知界面刷新.

3.2 使用ObservableCollection〈T〉做为DataGrid的数据源[3]

因为要使用ObservableCollection,所以要添加引用:

Sale类实现了INotifyPropertyChanged接口,当属性的值发生改变的时候触发PropertyChanged事件,送达消息到界面,从而实现即时刷新.

Sale类的代码如下:

本方案的关键在与Sale类的Money属性在定义的时候,当值发生改变的时候会触发PropertyChangedE-ventArgs事件,通知界面刷新.特别要注意的是界面与数据源的绑定.Binding="{Binding Path=Money,Mode=TwoWay}",指定了绑定方式为TwoWay.Silverlight 3.0中绑定方式一共有3个值,BindingMode的枚举值如下:

OneWay和OneTime是数据 (Model)发生变化时通知XAML中的控件.而TwoWay则是数据和XAML之间任何一方发生变化都会通知对方.在WPF中,BindingMode枚举有5个值,默认是Default:

大部分值与Silverlight 3.0中一样,OneWayToSource表示当XAML中的控件发生变化时,通知数据源,但是在反方向上,数据源发生变化却不会通知XAML中的控件,它和OneWay是正好相反的.

4 结束语

对比ObservableCollection和List.ObservableCollection是一个集合.但它是一个既实现了INotifyPropertyChanged接口又实现了INotifyCollectionChanged接口的集合,这是它与List的不同之处,所以,使用ObservableCollection注定要比List消耗性能.但使用ObservableCollection与控件绑定以后,可以避免先全部删除再重载的过程,效率更高.在微软的MSDN中,可以查询到与ObservableCollection类相关的所有属性、方法和接口,地址为:http://msdn.microsoft.com/zh-cn/library/ms668604.aspx.

[1]张洪定.WF和Silverlight教程[M].天津:南开大学出版社,2012.

[2]焦涛.对Silverlight中ObservableCollection自己的一点理解 [DB/OL].(2012-09-25)[2013-12-26]http://www.360doc.com/content/09/0609/09/67745_3823648.shtml.

[3]ObservableCollection[DB/OL].(2009-12-19)[2013-11-28].http//msdn.microsoft./zh-cn/library/ms66860.aspx.

(责任编辑 李健飞)

A Research on Interface Control Synchronization under the Background of Silverlight and WPF

LIU Qing-sheng
(Department of Computer,Huangshi Vocational College,Huangshi,Hubei 435000,China)

Silverlight technology is a cross-platform browser plug-in launched by Microsoft,and its rich interactivity has won widespread praise in the industry.In terms of page rendering,Silverlight is totally different from the traditional Web refresh mechanism.Among them,the Observable Collection class is frequently used by developers for interface interaction.Compared with the List class,the author uses Observable Collection to build a class,explaining how to do in Silverlight technology interface controls and backend data synchronization.

Silverlight;Observable Collection;interface control;synchronization.

TP316.7

:A

:1673-1972(2014)03-0030-05

2014-01-11

刘庆生(1971-),男,湖北咸宁人,副教授,主要从事计算机应用及系统开发研究.

猜你喜欢

计算机系黄石数据源
黄石国家公园庆祝150年蛮荒岁月——这是怎样的历史
奋力创造建设现代化新黄石的崭新业绩
黄石俱乐部度假别墅
黄石高速公路改造项目中互联网+工程建设管理系统的应用
计算机系简介
Web 大数据系统数据源选择*
童年趣事之不一起玩的理由
童年趣事之不一起玩的理由
基于不同网络数据源的期刊评价研究
基于真值发现的冲突数据源质量评价算法