繫結標記延伸
將屬性值延遲為資料繫結值,建立中繼運算式物件,並在執行階段解譯套用至雲素及其繫結的資料內容。
繫結運算式使用方式
<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 |
要設定的 Binding 或 BindingBase 屬性名稱。 並非所有 Binding 屬性都可以使用 Binding 延伸來設定,而且某些屬性只能在 Binding 運算式中使用進一步的巢狀標記延伸來設定。 請參閱「可以使用繫結延伸設定的繫結屬性」一節。 |
value1, valueN |
將屬性設定為的值。 屬性值的處理最終專屬於所設定之特定 Binding 屬性的類型和邏輯。 |
path |
設定隱含 Binding.Path 屬性的路徑字串。 另請參閱 PropertyPath XAML 語法。 |
不合格的 {Binding}
「繫結運算式使用方式」中顯示的 {Binding}
使用方式會建立具有預設值的 Binding 物件,其中包含初始 Binding.Path null
。 在許多案例中,這仍然很有用,因為建立的 Binding 可能依賴在執行階段資料內容中設定 Binding.Path 和 Binding.Source 等重要資料繫結屬性。 如需資料內容概念的詳細資訊,請參閱 資料繫結。
隱含路徑
Binding
標記延伸會使用 Binding.Path 作為概念性的「預設屬性」,其中 Path=
不需要出現在運算式中。 如果您使用隱含路徑指定 Binding
運算式,則隱含路徑必須先出現在運算式中,然後才顯示 Binding屬性由名稱指定的任何其他bindProp
= value
組。 例如: {Binding PathString}
,其中 PathString
是評估為標記延伸使用方式所建立之 Binding 中 Binding.Path 值的字串。 您可以在逗號分隔符號後面附加具有其他具名屬性的隱含路徑,例如, {Binding LastName, Mode=TwoWay}
。
可以使用繫結延伸設定的繫結屬性
本主題中顯示的語法使用泛型 bindProp
=value
近似值,因為有許多可透過 Binding
標記延伸/運算式語法設定的 BindingBase 或 Binding R/W 屬性。 它們可以依任何順序設定,但隱含 Binding.Path 除外。 (您可以選擇明確指定 Path=
,在此情況下可以依任何順序設定)。 基本上,您可以使用以逗號分隔的 bindProp
=value
組,在下列清單中設定零個或多個屬性。
其中數個屬性值需要物件類型,這些類型不支援從 XAML 中的文字語法轉換原生類型,因此需要標記延伸才能設定為屬性值。 請參閱 .NET Framework 類別庫中的 XAML 屬性使用方式一節,以取得每個屬性的詳細資訊:您用於 XAML 屬性語法的字串基本上與您在 Binding
運算式中指定的值相同,但您不會將引號放在 Binding
運算式中的每個bindProp
= value
周圍。
BindingGroupName:識別可能繫結群組的字串。 這是相對進階的繫結概念;請參閱 BindingGroupName的參考頁面。
BindsDirectlyToSource:布林值,可以是
true
或false
。 預設值為false
。Converter:可以設定為運算式中的
bindProp
=value
字串,但若要這樣做,則需要該值的物件參考,例如 StaticResource 標記延伸。 在此情況下,這個值是自定義轉換器類別的執行個體。ConverterCulture:在運算式中設定為標準型識別碼;請參閱 ConverterCulture的參考主題。
ConverterParameter:可以設定為運算式中的
bindProp
=value
字串,但這相依於所傳遞的參數類型。 如果傳遞值的參考類型,此使用方式需要物件參考,例如巢狀 StaticResource 標記延伸。ElementName:互斥與 RelativeSource 和 Source;每個繫結屬性都代表特定的繫結方法。 請參閱 資料繫結概觀。
FallbackValue:可以設定為運算式中的
bindProp
=value
字串,但這相依於所傳遞值的類型。 如果傳遞參考型別,則需要對象參考,例如巢狀 StaticResource 標記延伸。IsAsync:布林值,可以是
true
或false
。 預設值為false
。Mode: 值 是來自 BindingMode 列舉的常數名稱。 例如:
{Binding Mode=OneWay}
。NotifyOnSourceUpdated:布林值,可以是
true
或false
。 預設值為false
。NotifyOnTargetUpdated:布林值,可以是
true
或false
。 預設值為false
。NotifyOnValidationError:布林值,可以是
true
或false
。 預設值為false
。Path:描述資料物件或一般物件模型路徑的字串。 此格式提供數種不同的慣例來遍歷本主題中無法充分描述的物件模型。 請參閱 PropertyPath XAML 語法。
RelativeSource:互斥與 ElementName 和 Source;每個繫結屬性都代表特定的繫結方法。 請參閱 資料繫結概觀。 需要巢狀 RelativeSource MarkupExtension 使用方式來指定值。
Source:互斥與 RelativeSource 和 ElementName;每個繫結屬性都代表特定的繫結方法。 請參閱 資料繫結概觀。 需要巢狀延伸使用方式,通常是 StaticResource 標記延伸 ,其參考來自索引鍵資源字典的物件資料來源。
StringFormat:描述繫結資料的字串格式慣例的字串。 這是相對進階的繫結概念;請參閱 StringFormat的參考頁面。
TargetNullValue:可以設定為運算式中的
bindProp
=value
字串,但這相依於所傳遞的參數類型。 如果傳遞值的參考型別,則需要物件參考,例如巢狀 StaticResource 標記延伸。UpdateSourceTrigger: 值 是來自 UpdateSourceTrigger 列舉的常數名稱。 例如:
{Binding UpdateSourceTrigger=LostFocus}
。 特定控件對於這個繫結屬性可能會有不同的預設值。 請參閱 UpdateSourceTrigger。ValidatesOnDataErrors:布林值,可以是
true
或false
。 預設值為false
。 請參閱<備註>。ValidatesOnExceptions:布林值,可以是
true
或false
。 預設值為false
。 請參閱<備註>。XPath:描述 XML 資料來源之 XMLDOM 路徑的字串。 請參閱 使用 XMLDataProvider 和 XPath 查詢繫結至 XML 資料。
以下是無法使用 Binding
標記延伸/ {Binding}
運算式表單來設定Binding 的屬性。
UpdateSourceExceptionFilter:這個屬性需要回呼實作的參考。 XAML 語法中無法參考事件處理常式以外的回呼/方法。
ValidationRules:屬性會採用 ValidationRule 物件的泛型集合。 這可以表示為 Binding 物件元素中的屬性元素,但是沒有可供使用的屬性剖析技術,以用於
Binding
運算式。 請參閱 ValidationRules的參考主題。
備註
重要
就相依性屬性優先順序而言, Binding
運算式相當於本機設定的值。 如果您為先前有 Binding
運算式的屬性設定本機值,則會完全移除 Binding
。 如需詳細資訊,請參閱相依性屬性值優先順序。
本主題未涵蓋基本層級資料繫結的描述。 請參閱 資料繫結概觀。
注意
MultiBinding 和 PriorityBinding 不支援 XAML 延申語法。 您會改用使用方式屬性元素。 請參閱 MultiBinding 和 PriorityBinding的參考主題。
XAML 的布林值不區分大小寫。 例如,您可以指定 {Binding NotifyOnValidationError=true}
或 {Binding NotifyOnValidationError=True}
。
牽涉到資料驗證的繫結通常是由明確 Binding
元素指定,而不是作為 {Binding ...}
運算式,而且在運算式中設定 ValidatesOnDataErrors 或 ValidatesOnExceptions 並不常見。 這是因為在運算式表單中無法輕易設定小幫手屬性 ValidationRules。 如需詳細資訊,請參閱 實作繫結驗證。
Binding
是一種標記延伸。 當需要逸出屬性值而非常值或處理常式名稱時,通常會實作標記延伸,而且需求比歸因於特定類型或屬性上屬性屬性的型別轉換子更全域。 XAML 中的所有標記延伸都會在其屬性語法中使用 {
和 }
字元,這是 XAML 處理器辨識標記延伸必須處理字串內容的慣例。 如需詳細資訊,請參閱標記延伸和 WPF XAML。
Binding
是非典型標記延伸,其中 Binding 類別會執行 WPF XAML 實作的延伸功能,也會執行數個與 XAML 無關的其他方法和屬性。 其他成員的目的是讓 Binding 更具彈性且獨立的類別,除了做為 XAML 標記延伸之外,還可以解決許多資料繫結案例。