共用方式為


系結標記延伸

將屬性值延遲為資料繫結的值,建立一個中間運算式物件,並在執行階段解釋套用於元素及其繫結的資料上下文。

繫結運算式使用方式

<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 處理。 換句話說, <BindingbindProp1="value1"[bindPropN="valueN"]*/> 是物件元素使用方式屬性 Binding 的對等語法,而不是 Binding 運算式使用方式。 若要瞭解 Binding特定屬性的 XAML 屬性使用方式,請參閱 .NET Framework 類別庫中 Binding 相關屬性的「XAML 屬性使用方式」一節。

XAML 值

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

未限定的 {Binding}

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

隱含路徑

Binding 標記延伸會使用 Binding.Path 作為概念性的「預設屬性」,其中 Path= 不需要出現在運算式中。 如果您使用隱含路徑指定 Binding 運算式,則隱含路徑必須在該運算式中首先出現,接在其後的是任何bindProp=value序列,其中Binding屬性的名稱被指定。 例如:{Binding PathString},其中 PathString 是一個字串,用於評估由標記擴展使用創建的 Binding 中的 Binding.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 延申語法。 您會改用使用方式屬性元素。 請參閱 MultiBindingPriorityBinding的參考主題。

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

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

Binding 是標記延伸。 當需要將屬性值轉義為非字面值或處理常式名稱時,通常會實作標記擴展,這種需求比單純依賴於某些類型或屬性上的型別轉換器更加具有全域性。 XAML 中的所有標記延伸都會在其屬性語法中使用 {} 字元,這是 XAML 處理器辨識標記延伸必須處理字串內容的慣例。 如需詳細資訊,請參閱標記延伸和 WPF XAML

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

另請參閱