繫結標記延伸

將屬性值延遲為數據系結值,建立中繼運算式物件,並在執行時間解譯套用至專案及其系結的資料內容。

系結運算式使用方式

<object property="{Binding}" .../>  
-or-  
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...  
/>  
-or-  
<object property="{Binding path}" .../>  
-or  
<object property="{Binding path[, bindPropN=valueN]*}" .../>  

語法注意事項

在這些語法中, []* 不是常值。 它們是標記法的一部分,表示可以使用零個或多個 bindProp = 組, , 並在它們與先前 的 bindProp = 組之間使用分隔符號。

您可以使用物件元素的屬性來設定「可以使用系結延伸模組設定的系結屬性」區段中所列的任何屬性 Binding 。 不過,這不是 真正的標記延伸用法 Binding ,它只是設定 CLR Binding 類別屬性之屬性的一般 XAML 處理。 換句話說, <Binding bindProp1 value1 =""[ bindPropN valueN =""]*/> 是物件專案使用方式屬性的 Binding 對等語法,而不是 Binding 運算式使用方式。 若要瞭解 特定屬性 Binding 的 XAML 屬性使用方式,請參閱 .NET Framework 類別庫中相關屬性 Binding一節。

XAML 值

Description
bindProp1, bindPropN 要設定的 BindingBindingBase 屬性名稱。 Binding並非所有屬性都可以使用 Binding 延伸模組來設定,而且某些屬性只能在運算式中使用進一 Binding 步的巢狀標記延伸來設定。 請參閱一節。
value1, valueN 要設定屬性的值。 屬性值的處理最終專屬於所設定之特定 Binding 屬性的類型和邏輯。
path 設定隱含 Binding.Path 屬性的路徑字串。 另 請參閱 PropertyPath XAML 語法

不合格的 {Binding}

「系 {Binding} 結運算式使用方式」中顯示的使用方式會 Binding 建立具有預設值的物件,其中包含 的初始 Binding.Pathnull 。 在許多案例中,這仍然很有用,因為建立 Binding 的 可能依賴關鍵資料系結屬性,例如 Binding.Path ,以及在 Binding.Source 執行時間資料內容中設定。 如需資料內容概念的詳細資訊,請參閱 資料系結

隱含路徑

標記 Binding 延伸使用 Binding.Path 做為概念性的「預設屬性」,其中 Path= 不需要出現在運算式中。 如果您指定 Binding 具有隱含路徑的運算式,則隱含路徑必須先出現在運算式中,然後才顯示內容依名稱指定的任何其他 valuebindProp= 配對。 Binding 例如: {Binding PathString} ,其中 PathString 是評估為 標記延伸使用方式所建立 之 中的 BindingBinding.Path 字串。 您可以在逗號分隔符號後面附加具有其他具名屬性的隱含路徑,例如 {Binding LastName, Mode=TwoWay}

可以使用系結延伸模組設定的系結屬性

本主題中顯示的語法使用泛型 bindProp=value 近似值,因為 有許多可透過標記延伸/運算式語法來設定 或 BindingBinding 讀取/寫入屬性。 BindingBase 它們可以依任何順序設定,但隱含 Binding.Path 的 除外。 (您可以選擇明確指定 Path= ,在此情況下可以依任何順序設定)。 基本上,您可以使用以逗號分隔的配對, bindProp=value 在下列清單中設定零個或多個屬性。

其中數個屬性值需要物件類型,這些類型不支援從 XAML 中的文字語法轉換原生類型,因此需要標記延伸才能設定為屬性值。 如需詳細資訊,請參閱 .NET Framework 類別庫中的 XAML 屬性使用方式一節,以取得每個屬性的詳細資訊:您用於 XAML 屬性語法的字串與或沒有進一 Binding 步標記延伸使用方式基本上與您在運算式中指定的值相同,但例外狀況是,您不會在每個運算式中 Binding 加上引號 bindProp=value

以下是無法使用標記延伸/ {Binding} 運算式表單來設定 Binding 的屬性 Binding

備註

重要

就相依性屬性優先順序而言, Binding 運算式相當於本機設定的值。 如果您為先前有 Binding 運算式的屬性設定本機值, Binding 則會完全移除 。 如需詳細資訊,請參閱相依性屬性值優先順序

本主題未涵蓋在基本層級描述資料系結。 請參閱 資料系結概觀

注意

MultiBindingPriorityBinding 不支援 XAML 延伸模組語法。 您會改用屬性元素。 請參閱 和 PriorityBindingMultiBinding 參考主題。

XAML 的布林值不區分大小寫。 例如,您可以指定 {Binding NotifyOnValidationError=true}{Binding NotifyOnValidationError=True}

牽涉到資料驗證的系結通常是由明確 Binding 專案指定,而不是做為 {Binding ...} 運算式,而且在運算式中設定 ValidatesOnDataErrorsValidatesOnExceptions 並不常見。 這是因為隨附屬性 ValidationRules 無法在運算式表單中輕易設定。 如需詳細資訊,請參閱 實作系結驗證

Binding 是一種標記延伸。 當需要逸出屬性值而非常值或處理常式名稱時,通常會實作標記延伸,而且需求比特定類型或屬性上屬性屬性的型別轉換子更全域。 XAML 中的所有標記延伸都會在其 { 屬性語法中使用 和 } 字元,這是 XAML 處理器辨識標記延伸必須處理字串內容的慣例。 如需詳細資訊,請參閱標記延伸和 WPF XAML

Binding 是非典型標記延伸,其中 Binding 類別會實作 WPF XAML 實作的延伸功能,也會實作數個與 XAML 無關的其他方法和屬性。 除了做為 XAML 標記延伸之外,其他成員還旨在建立 Binding 更多功能且獨立的類別,以處理許多資料系結案例。

另請參閱