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