1. 程式人生 > >WPF中 PropertyPath XAML 語法

WPF中 PropertyPath XAML 語法

原文: WPF中 PropertyPath XAML 語法

PropertyPath 物件支援複雜的內聯XAML語法用來設定各種各樣的屬性,這些屬性把PropertyPath型別作為它們的值。這篇文章討論PropertyPath用在繫結和動畫中的語法。

PropertyPath用在哪裡

PropertyPath是一個公共物件可以用在WPF的幾個特性中。雖然公共PropertyPath用來傳遞屬性資訊,但是在不同的特性中,PropertyPath的用法是不同的。因此,在不同的特性中講解PropertyPath的語法才是實際的。

WPF主要用PropertyPath來描述物件模型的路徑,貫穿一個物件資料來源的屬性,並且描述目標動畫的目標路徑。

一些style和template屬性,比如Setter.Property攜帶一個限定的屬性名稱,看起來很像一個PropertyPath。但是這並不是一個真正的PropertyPath,而是一個限定的owner.property字串格式的用法,這種用法是WPF XAML處理器結合依賴物件的的型別轉換器使用的。

PropertyPath用在物件的資料繫結中(Data Binding)

資料繫結是一個WPF特性,因此你可以把任何依賴物件屬性繫結到目標值。然而,資料繫結的源不是必須是依賴屬性;它可以是任何屬性型別,只要這個屬性型別能被應用程式資料提供器識別就可以。Property路徑特別是用於ObjectDataProvider,物件資料提供器用來從公共執行時(CLR)物件和它們的屬性中獲取繫結源。

記住,XML資料繫結不適用PropertyPath,因為它在Binding中不用Path,而是XPath。你可以用XPath和有效的XPath語法指向資料的XML DOM。XPath也是被規定為字串,但是不在這裡講解。

理解資料繫結中的屬性路徑的關鍵是你能把繫結定位到它的屬性值,或者你可以繫結到列表或者集合屬性。如果你要繫結到集合,比如繫結一個ListBox,ListBox會根據集合中專案的數量自動進行擴充套件。

Data Context直接物件的單個屬性

<Binding Path="propertyName" .../> 

propertyName必須能解析成當前上下文(DataContext)的屬性名稱,用於Path。如果繫結更新源,屬性必須是可讀寫的,並且源物件是可變的(mutable)。

Data Context直接物件的單個索引

key必須要麼是字典或雜湊表的具有型別索引,或者是陣列的整型索引。並且,鍵值必須是可以直接繫結到屬性的型別。例如,一個包含字串鍵和字串值的雜湊表,可以用這種方式繫結到TextBox的Text。或者,如果鍵值指向一個集合或者子索引,你可以用這個語法繫結到集合型別的屬性。此外,你需要引用一個具體的屬性,通過下面的語法<Binding Path="[key].propertyName" .../>