TemplateBinding 標記延伸
將控制項樣板中的屬性值連結成為樣板化控制項上另一個屬性的值。
XAML Attribute Usage
<object property="{TemplateBinding sourceProperty}" ... />
XAML 屬性使用方式 (針對樣板或樣式中的 Setter 屬性)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
XAML 值
值 | Description |
---|---|
propertyName |
在 setter 語法中設定之屬性的 DependencyProperty.Name。 |
sourceProperty |
存在於樣板化類型上的另一個相依性屬性,由其 DependencyProperty.Name 所指定。 - 或 - 「穿插句點」的屬性名稱,由樣板化目標類型以外的不同類型所定義。 這實際上是一個 PropertyPath。 請參閱 PropertyPath XAML 語法。 |
備註
TemplateBinding
是範本案例的最佳化形式 Binding
,類似於使用 {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
建構的 Binding
。 TemplateBinding
永遠是單向繫結,即使相關的屬性是預設為雙向繫結也一樣。 相關的兩個屬性必須是相依性屬性。 為了達成與範本父代的雙向繫結,請改用下列繫結陳述式 {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}
。
RelativeSource 是另一個標記延伸,有時候會與 TemplateBinding
搭配使用或取而代之,以便在範本內執行相對屬性繫結。
此處未涵蓋控制項範本的概念說明;如需更多資訊,請參閱 控制項樣式和範本。
屬性 (Attribute) 語法是最常搭配這個標記延伸來使用的語法。 TemplateBinding
識別項字串後所提供的字串語彙基元,是指派做為基礎 Property 延伸類別的 TemplateBindingExtension 值。
物件項目語法雖然可行,但由於沒有實際的應用程式,所以這裡不加說明。 TemplateBinding
是用來以評估後的運算式填滿 setter 內的值,而使用 TemplateBinding
的物件項目語法來填滿 <Setter.Property>
屬性項目語法則太過繁瑣。
TemplateBinding
也可以用於會指定 Property 屬性 (Property) 做為 property=value 配對組的詳細屬性 (Attribute) 使用方式中。
<object property="{TemplateBinding Property=sourceProperty}" ... />
詳細使用方式通常是適用於具有一個以上可設定屬性或有些屬性為選擇性屬性的標記延伸。 因為 TemplateBinding
只有一個必要的可設定屬性,所以這種詳細使用方式並不常見。
在 WPF XAML 處理器實作中,此標記延伸的處理由 TemplateBindingExtension 類別定義。
TemplateBinding
是一種標記延伸。 如果必須將屬性 (Attribute) 值加上逸出符號,以免成為常值或處理常式名稱,而且這個動作必須更全面地實施 (而不是只對特定類型或屬性 (Property) 設定類型轉換子 (Type Converter)),則通常會實作標記延伸。 所有 XAML 標記延伸都會在其屬性語法中使用 {
與 }
字元,這個慣例讓 XAML 處理器知道某個標記延伸必須處理這個屬性。 如需詳細資訊,請參閱標記延伸和 WPF XAML。