繫結標記延伸

將屬性值延遲為資料繫結值,建立中繼運算式物件,並在執行階段解譯套用至雲素及其繫結的資料內容。

繫結運算式使用方式

<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 屬性使用方式」一節。

XAML 值

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

不合格的 {Binding}

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

隱含路徑

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

可以使用繫結延伸設定的繫結屬性

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

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

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

備註

重要

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

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

注意

MultiBindingPriorityBinding 不支援 XAML 延申語法。 您會改用使用方式屬性元素。 請參閱 MultiBindingPriorityBinding的參考主題。

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

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

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

Binding 是非典型標記延伸,其中 Binding 類別會執行 WPF XAML 實作的延伸功能,也會執行數個與 XAML 無關的其他方法和屬性。 其他成員的目的是讓 Binding 更具彈性且獨立的類別,除了做為 XAML 標記延伸之外,還可以解決許多資料繫結案例。

另請參閱