劉慶生
(黃石職業(yè)技術(shù)學(xué)院 計算機(jī)系,湖北 黃石 435000)
Silverlight和WPF 環(huán)境下ObservableCollection類與界面控件同步的研究
劉慶生
(黃石職業(yè)技術(shù)學(xué)院 計算機(jī)系,湖北 黃石 435000)
Silverlight技術(shù)是微軟推出的一個跨平臺的瀏覽器插件,豐富的交互功能得到了業(yè)界的廣泛贊譽(yù).在頁面呈現(xiàn)方面,Silverlight與傳統(tǒng)的Web刷新機(jī)制完全不同.其中,ObservableCollection類是開發(fā)人員用于與界面交互的常用手段.使用ObservableCollection構(gòu)建一個類,通過與List類對比來詮釋Silverlight技術(shù)中如何做到界面控件與后臺數(shù)據(jù)的同步.
Silverlight;ObservableCollection;界面控件;同步
Microsoft Silverlight是當(dāng)今一種新的Web呈現(xiàn)技術(shù),能在各種平臺上運(yùn)行,它為用戶提供了統(tǒng)一而豐富的用戶體驗(yàn)[1],借助這個技術(shù),無論是在瀏覽器內(nèi)還是在桌面操作系統(tǒng)中,都可以實(shí)現(xiàn)內(nèi)容豐富、視覺效果絢麗的交互式體驗(yàn).它的出現(xiàn),完善了企業(yè)應(yīng)用開發(fā),將成為下一代企業(yè)應(yīng)用程序的解決方案.
刷新頁面是經(jīng)常性的操作,實(shí)現(xiàn)這種操作的方法很多,但是通過Silverlight實(shí)現(xiàn)更有優(yōu)勢.因?yàn)镾ilverlight有著類似C/S模式的特點(diǎn),開發(fā)者不需要考慮使用Ajax來設(shè)計Web界面的局部刷新.ObservableCollection類是Microsoft.NET Framework一個特殊部件[2],可以讓界面與后臺數(shù)據(jù)源的變化保持一致.它可以在添加、刪除、移動、刷新或替換集合中的項(xiàng)目時引發(fā) CollectionChanged事件,還可以在窗口以外的代碼修改基礎(chǔ)數(shù)據(jù)時做出反應(yīng).下面,在Visual Studio 2010環(huán)境下使用C#為編程語言,通過一個實(shí)例來理解這一技術(shù).
先提出設(shè)計目標(biāo).在一個DataGrid控件中,通過修改產(chǎn)品的數(shù)量,能夠自動更新金額的界面值.
打開Visual Studio 2010,點(diǎn)擊新建“項(xiàng)目”->“Silverlight”->“Silverlight應(yīng)用程序”,然后輸入項(xiàng)目名稱后單擊“確定”.最后,在默認(rèn)的頁面MainPage.xaml中添加一個DataGrid控件,調(diào)整DataGrid的大小和位置即完成了界面控件的設(shè)計.下面是兩種方案的公共設(shè)計部分.
2.1 方案的公共設(shè)計部分
2.1.1 界面設(shè)計主要代碼如下(DataGrid1的Xaml代碼):
2.1.2 后臺設(shè)計主要代碼(Xaml.cs)
3.1 使用List〈T〉數(shù)據(jù)作為DataGrid的數(shù)據(jù)源
建立Sale類,代碼如下:
在這種情況下,修改界面上的數(shù)量的值,金額不會發(fā)生變化.雖然我們通過設(shè)置斷點(diǎn)來檢查金額變量的值已經(jīng)發(fā)生變化,但是界面依然沒變化,這是因?yàn)長ist
3.2 使用ObservableCollection〈T〉做為DataGrid的數(shù)據(jù)源[3]
因?yàn)橐褂肙bservableCollection,所以要添加引用:
Sale類實(shí)現(xiàn)了INotifyPropertyChanged接口,當(dāng)屬性的值發(fā)生改變的時候觸發(fā)PropertyChanged事件,送達(dá)消息到界面,從而實(shí)現(xiàn)即時刷新.
Sale類的代碼如下:
本方案的關(guān)鍵在與Sale類的Money屬性在定義的時候,當(dāng)值發(fā)生改變的時候會觸發(fā)PropertyChangedE-ventArgs事件,通知界面刷新.特別要注意的是界面與數(shù)據(jù)源的綁定.Binding="{Binding Path=Money,Mode=TwoWay}",指定了綁定方式為TwoWay.Silverlight 3.0中綁定方式一共有3個值,BindingMode的枚舉值如下:
OneWay和OneTime是數(shù)據(jù) (Model)發(fā)生變化時通知XAML中的控件.而TwoWay則是數(shù)據(jù)和XAML之間任何一方發(fā)生變化都會通知對方.在WPF中,BindingMode枚舉有5個值,默認(rèn)是Default:
大部分值與Silverlight 3.0中一樣,OneWayToSource表示當(dāng)XAML中的控件發(fā)生變化時,通知數(shù)據(jù)源,但是在反方向上,數(shù)據(jù)源發(fā)生變化卻不會通知XAML中的控件,它和OneWay是正好相反的.
對比ObservableCollection和List.ObservableCollection是一個集合.但它是一個既實(shí)現(xiàn)了INotifyPropertyChanged接口又實(shí)現(xiàn)了INotifyCollectionChanged接口的集合,這是它與List
[1]張洪定.WF和Silverlight教程[M].天津:南開大學(xué)出版社,2012.
[2]焦?jié)?對Silverlight中ObservableCollection自己的一點(diǎn)理解 [DB/OL].(2012-09-25)[2013-12-26]http://www.360doc.com/content/09/0609/09/67745_3823648.shtml.
[3]ObservableCollection
(責(zé)任編輯 李健飛)
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-),男,湖北咸寧人,副教授,主要從事計算機(jī)應(yīng)用及系統(tǒng)開發(fā)研究.