TemplateBinding のマークアップ拡張機能
更新 : 2007 年 11 月
コントロール テンプレート内のプロパティの値を、template 宣言されたコントロールのその他の公開されているプロパティの値にリンクします。
XAML 属性の使用方法
<object property="{TemplateBinding targetProperty}" .../>
XAML 属性の使用方法 (テンプレートまたはスタイルの Setter プロパティの場合)
<Setter Property="propertyName" Value="{TemplateBinding targetProperty}" .../>
XAML 値
propertyName |
Setter 構文で設定されるプロパティの DependencyProperty.Name。 |
targetProperty |
template 宣言された型に存在する、DependencyProperty.Name によって指定された依存関係プロパティ。 または template 宣言された対象の型とは異なる型で定義されている "ドットダウン" プロパティ名。これは、実際には PropertyPath です。「PropertyPath の XAML 構文」を参照してください。 |
解説
TemplateBinding は、テンプレート シナリオに合わせて最適化された形態のバインディングであり、{Binding RelativeSource={RelativeSource TemplatedParent}} を使用して構築された Binding に類似します。
RelativeSource もマークアップ拡張機能の 1 つであり、テンプレート内で相対プロパティ バインディングを実行するために、TemplateBinding と組み合わせて使用されたり、TemplateBinding の代わりに使用されることがあります。
ここでは説明されていないコントロール テンプレートの概念については、「ControlTemplate の例」を参照してください。
属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。TemplateBinding 識別子文字列の後に設定される文字列トークンは、基になる TemplateBindingExtension 拡張クラスの Property 値として割り当てられます。
オブジェクト要素構文は、理屈の上ではありえますが、現実的な用途がないためここでは触れません。TemplateBinding は、評価された式を使用して setter 内で値を埋め込むために使用され、TemplateBinding を使用する場合、TemplateBinding が <Setter.Property> プロパティ要素構文を埋め込むためのオブジェクト要素構文は、必要以上に詳細です。
TemplateBinding は、Property プロパティをプロパティおよび値のペアとして指定する詳細出力属性使用でも使用できます。
<object property="{TemplateBinding Property=targetProperty}" .../>
詳細出力の使用は、複数の設定可能プロパティを持つ拡張機能や、一部のプロパティがオプションである場合に役立ちます。TemplateBinding には、必須の設定可能プロパティが 1 つしか存在しないため、このような詳細出力の使用は一般的ではありません。
WPF XAML プロセッサ実装では、このマークアップ拡張機能の処理は、TemplateBindingExtension クラスによって定義されます。
TemplateBinding はマークアップ拡張機能です。一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラ名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバータを適用するだけにとどまない場合です。XAML のすべてのマークアップ拡張機能では、それぞれの属性構文で { と } の 2 つの記号を使用します。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張機能で属性を処理する必要があることを認識します。詳細については、「マークアップ拡張機能と XAML」を参照してください。