繫結標記延伸
將屬性值延遲為數據系結值,建立中繼運算式物件,並在執行時間解譯套用至專案及其系結的資料內容。
系結運算式使用方式
<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 |
要設定的 Binding 或 BindingBase 屬性名稱。 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
具有隱含路徑的運算式,則隱含路徑必須先出現在運算式中,然後才顯示內容依名稱指定的任何其他 value
bindProp
= 配對。 Binding 例如: {Binding PathString}
,其中 PathString
是評估為 標記延伸使用方式所建立 之 中的 Binding 值 Binding.Path 字串。 您可以在逗號分隔符號後面附加具有其他具名屬性的隱含路徑,例如 {Binding LastName, Mode=TwoWay}
。
可以使用系結延伸模組設定的系結屬性
本主題中顯示的語法使用泛型 bindProp
=value
近似值,因為 有許多可透過標記延伸/運算式語法來設定 或 Binding 的 Binding
讀取/寫入屬性。 BindingBase 它們可以依任何順序設定,但隱含 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: value 是列舉中的 BindingMode 常數名稱。 例如:
{Binding Mode=OneWay}
。NotifyOnSourceUpdated:布林值,可以是
true
或false
。 預設值為false
。NotifyOnTargetUpdated:布林值,可以是
true
或false
。 預設值為false
。NotifyOnValidationError:布林值,可以是
true
或false
。 預設值為false
。Path:描述資料物件或一般物件模型路徑的字串。 此格式提供數種不同的慣例來周遊本主題中無法充分描述的物件模型。 請參閱 PropertyPath XAML 語法 。
RelativeSource:互斥與 和 ElementNameSource ;這些系結屬性的每一個都代表特定的系結方法。 請參閱 資料系結概觀 。 需要使用巢狀 RelativeSource MarkupExtension 來指定值。
Source:互斥與 RelativeSource 和 ElementName ;每個系結屬性都代表特定的系結方法。 請參閱 資料系結概觀 。 需要巢狀延伸模組使用方式,通常是 StaticResource 標記延伸 ,其參考來自索引鍵資源字典的物件資料來源。
StringFormat:字串,描述系結資料的字串格式慣例。 這是相對進階的系結概念;請參閱 的 StringFormat 參考頁面。
TargetNullValue:可以在運算式中設定為
bindProp
=value
字串,但這取決於所傳遞之參數的類型。 如果傳遞值的參考類型,則需要物件參考,例如巢狀 StaticResource 標記延伸 。UpdateSourceTrigger: value 是列舉中的 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 延伸模組語法。 您會改用屬性元素。 請參閱 和 PriorityBinding 的 MultiBinding 參考主題。
XAML 的布林值不區分大小寫。 例如,您可以指定 {Binding NotifyOnValidationError=true}
或 {Binding NotifyOnValidationError=True}
。
牽涉到資料驗證的系結通常是由明確 Binding
專案指定,而不是做為 {Binding ...}
運算式,而且在運算式中設定 ValidatesOnDataErrors 或 ValidatesOnExceptions 並不常見。 這是因為隨附屬性 ValidationRules 無法在運算式表單中輕易設定。 如需詳細資訊,請參閱 實作系結驗證 。
Binding
是一種標記延伸。 當需要逸出屬性值而非常值或處理常式名稱時,通常會實作標記延伸,而且需求比特定類型或屬性上屬性屬性的型別轉換子更全域。 XAML 中的所有標記延伸都會在其 {
屬性語法中使用 和 }
字元,這是 XAML 處理器辨識標記延伸必須處理字串內容的慣例。 如需詳細資訊,請參閱標記延伸和 WPF XAML。
Binding
是非典型標記延伸,其中 Binding 類別會實作 WPF XAML 實作的延伸功能,也會實作數個與 XAML 無關的其他方法和屬性。 除了做為 XAML 標記延伸之外,其他成員還旨在建立 Binding 更多功能且獨立的類別,以處理許多資料系結案例。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應