TemplateBinding 標記延伸
更新:2007 年 11 月
將控制項樣板中的屬性值連結成為樣板化控制項上其他公開屬性的值。
XAML 屬性使用方式
<object property="{TemplateBinding targetProperty}" .../>
XAML 屬性使用方式 (針對樣板或樣式中的 Setter 屬性)
<Setter Property="propertyName" Value="{TemplateBinding targetProperty}" .../>
XAML 值
propertyName |
在 setter 語法中設定之屬性的 DependencyProperty.Name。 |
targetProperty |
存在於樣板化型別上的相依性屬性,由其 DependencyProperty.Name 指定。 -或- 「穿插句點」的屬性名稱,由樣板化目標型別以外的不同型別定義。這實際上是一個 PropertyPath。請參閱 PropertyPath XAML 語法。 |
備註
TemplateBinding 是針對樣板最佳化的繫結形式,類似於使用 {Binding RelativeSource={RelativeSource TemplatedParent}} 建構的 Binding。
RelativeSource 是另一個標記延伸,有時候會與 TemplateBinding 搭配或取而代之,以在樣板內執行相對屬性繫結。
這裡將不說明控制項樣板的概念,如需詳細資訊,請參閱 ControlTemplate 範例。
屬性 (Attribute) 語法是最常配合這個標記延伸使用的語法。TemplateBinding 識別項字串後提供的字串語彙基元,是指派做為基礎 TemplateBindingExtension 延伸類別的 Property 值。
物件項目語法雖然可行,但由於沒有實際的應用,所以這裡不加說明。TemplateBinding 是用來以評估後的運算式填滿 setter 內的值,而使用 TemplateBinding 的物件項目語法來填滿 <Setter.Property> 屬性項目語法則太過繁瑣。
TemplateBinding 也可以用於會指定 Property 屬性 (Property) 做為 property=value 配對組的詳細屬性 (Attribute) 使用方式中。
<object property="{TemplateBinding Property=targetProperty}" .../>
繁複的使用方法所適用的擴充,通常是具有一個以上可設定屬性或有些屬性為選擇性。因為 TemplateBinding 只有一個必要的可設定屬性,所以這種詳細使用方式並不常見。
在 WPFXAML 處理器實作中,這個標記延伸的處理是由 TemplateBindingExtension 類別定義的。
TemplateBinding 是一種標記延伸。如果必須將屬性 (Attribute) 值加上逸出符號,以免成為常值或處理常式名稱,而且這個動作必須更全面地實施 (而不是只對特定型別或屬性 (Property) 設定型別轉換子 (Type Converter)),則通常會實作標記延伸。XAML 所有的標記延伸在屬性 (Attribute) 語法中使用 { 和 } 字元,透過這個慣例,XAML 處理器會辨認出標記延伸必須處理該屬性 (Attribute)。如需詳細資訊,請參閱標記延伸和 XAML。