WPF數據處理相關經驗總結
WPF數據處理是一個非常復雜的操作步驟。不過相比其它工具的應用。它又是一個可以幫助用戶簡單實現功能需求的一個操作。#t#
數據綁定,這是WPF提供的一個真正的優點。除了可以用在傳統的綁定環境中,數據綁定已經被擴展應用到控件屬性上。學習應用數據綁定,也能真正的體現XAML的好處。到底什么是數據綁定呢?
也許你從字面上已經理解的很不錯了。通過數據綁定,我們在應用程序UI和程序邏輯之間建立了一種聯系。正常建立綁定后,在數據的值發生改變后,綁定到數據的元素將自動更新、體現出數據的變化。
同樣,我們先看幾個相關的知識點:
WPF數據處理1、DataContext屬性。
設置DataContext屬性,其實就是指定數據上下文。那么數據上下文又是什么呢?又是一個新的概念:數據上下文允許元素從它的父元素繼承數據綁定的數據源。很簡單,在某個元素的DataContext中指定的值,那么在這個元素的子元素也可以使用。注意,如果我們修改了FrameworkElement或者FrameworkContentElement元素的DataContext屬性,那么元素將不再繼承DataContext值。也就是說新設置的屬性值將覆蓋父元素的設置。如何設置DataContext屬性,稍后說明。
WPF數據處理2、數據源的種類。
也許,WPF提供的數據綁定只是實現了一項普通的功能而已,但是,WPF中所支持的多種數據源使得它的數據綁定功能將更加強大。現在,WPF支持如下四種綁定源:
(1)、任意的CLR對象:數據源可以是CLR對象的屬性、子屬性以及Indexers。對于這種類型的綁定源,WPF采用兩種方式來獲取屬性值:A)、反射(Reflection);B)、CustomTypeDescriptor,如果對象實現了ICustomTypeDescriptor,綁定將使用這個接口來獲取屬性值。
(2)、XML結點:數據源可以是XML文件片斷。也可以是XMLDataProvider提供的整個XML文件。
(3)、ADO.NET數據表。我對ADO.NET的了解不夠,在此不做過多評論。
(4)、Dependency對象。綁定源可以是其它DependencyObject的DependencyProperty屬性。
WPF數據處理3、數據綁定的方式:
(1)、OneWay,單一方向的綁定,只有在數據源發生變化后才會更新綁定目標。
(2)、TwoWay,雙向綁定,綁定的兩端任何一端發生變化,都將通知另一端。
(3)、OneTime,只綁定一次。綁定完成后任何一端的變化都不會通知對方。
在上面的第二點我介紹了數據源的種類,注意這里的概念和下面要說明的指定數據源的方式的區別。目前,指定數據源有三種方式,我們可以通過任何一種方式來指定上述的任何一種數據源:
(1)、通過Source標記。我們可以在使用Binding使用Source標記顯式指定數據源。
(2)、通過ElementName標記。這個ElementName指定了一個已知的對象名稱,將使用它作為綁定數據源。
(3)、通過RelativeRource標記。這個標記將在后面說明ControlTemplate和Style時再進行說明。
現在我們說明了很多和WPF數據處理相關的內容。但是再綁定的時候,我們還需要指定綁定對象的屬性名稱。所以WPT提供了一個Path標記。它被用來指定數據源的屬性。也即是數據源將在數據源對象的Path所指定的屬性上尋找屬性值。