WPF中的數(shù)據(jù)處理,。前面講過,,通過實現(xiàn)INotifyPropertyChanged,,我們可以改變使任意的CLR對象支持WPF的綁定源,。但是,,INotifyPropertyChanged通常只應(yīng)用在單個的類屬性上,。在現(xiàn)實應(yīng)用中,,我們還會遇到另外一種情況:我們需要監(jiān)視某一堆的數(shù)據(jù)是否發(fā)生變化。也就是說我們綁定的數(shù)據(jù)源不再是一個單獨數(shù)據(jù)對象,。比如,,綁定源是一個數(shù)據(jù)表時,我們希望在表中任何一條數(shù)據(jù)發(fā)生變化就能得到通知,。(這里暫不考慮WPF綁定對ADO.NET的支持。)
WPF提供了一個ObservableCollection類,,它實現(xiàn)了一個暴露了INotifyPropertyChanged的數(shù)據(jù)集合,。也就是說我們不需要自己對每個單獨的數(shù)據(jù)實現(xiàn)INotifyPropertyChanged結(jié)構(gòu)。我們先看看如何實現(xiàn)一個簡單的綁定數(shù)據(jù)集合,。 namespace NSLYL public string Name public string Description
代碼很簡單,,基本上就是這樣的一個模板。然后,,我們就可以把LYLDataObjCol綁定到一個需要多項數(shù)據(jù)的Element之上,,比如ListBox、ComboBox等等,。 <ListBox ItemsSource="{StaticResource dataObj}" .../> 綁定之后,,只要我的LYLDataObjCol對象發(fā)送了變化,ListBox,、ComboBox的數(shù)據(jù)也會有對應(yīng)的變化,。 到現(xiàn)在,我們已經(jīng)知道在綁定的時候有兩種指定數(shù)據(jù)源的方式:1,、DataContext,,關(guān)于它我們在這個Post有簡單介紹。2,、直接用Binding類的Source屬性,。那么,我們在使用的時候如何區(qū)別呢?首先,,Source的優(yōu)先級比DataContext高,,只有Source不存在,或者在當(dāng)前Source到不到需要的屬性時才會查找DataContext,。除此之外,,這兩者沒有真正的區(qū)別,只是建議使用Source,,它能有助于我們調(diào)試應(yīng)用程序,。因為通過它可以明確的得到Source的信息。而DataContext支持一種繼承,??梢栽诟窫lement指定Source源。這同時也成為了DataContext的一個優(yōu)點:如果多個Element需要綁定同一個Source源,,那么我們只需要在一個地方指定DataContext,,就可以在其子Element使用。 |
|