TemplateBinding のマークアップ拡張機能TemplateBinding Markup Extension

コントロール テンプレート内のプロパティの値を、template 宣言されたコントロールの別のプロパティの値にリンクします。Links the value of a property in a control template to be the value of another property on the templated control.

XAML 属性の使用方法XAML Attribute Usage

<object property="{TemplateBinding sourceProperty}" .../>  

XAML 属性の使用方法 (テンプレートまたはスタイルの Setter プロパティの場合)XAML Attribute Usage (for Setter property in template or style)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>  


propertyName Setter 構文で設定されるプロパティの DependencyProperty.NameDependencyProperty.Name of the property being set in the setter syntax.
sourceProperty template 宣言された型に存在する、DependencyProperty.Name によって指定された別の依存関係プロパティ。Another dependency property that exists on the type being templated, specified by its DependencyProperty.Name.

または- or -

template 宣言された対象の型とは異なる型で定義されている "ドットダウン" プロパティ名。A "dotted-down" property name that is defined by a different type than the target type being templated. これは、実際には PropertyPath です。This is actually a PropertyPath. PROPERTYPATH XAML 構文」を参照してください。See PropertyPath XAML Syntax.


TemplateBinding は、{Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}で構築された Binding に似た、テンプレートシナリオ用のバインドの最適化された形式です。A TemplateBinding is an optimized form of a Binding for template scenarios, analogous to a Binding constructed with {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}. 関連するプロパティが既定で双方向のバインディングの場合でも、TemplateBinding は常に一方向のバインディングです。A TemplateBinding is always a one-way binding, even if properties involved default to two-way binding. 関連する両方のプロパティは、依存関係プロパティである必要があります。Both properties involved must be dependency properties. テンプレート化された親への双方向のバインドを実現するには、代わりに次の binding ステートメントを使用して {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}ます。In order to achieve two-way binding to a templated parent use the following binding statement instead {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.

RelativeSourceは、テンプレート内で相対プロパティのバインドを実行するために、TemplateBinding ではなくまたはと組み合わせて使用されることがある、別のマークアップ拡張機能です。RelativeSource is another markup extension that is sometimes used in conjunction with or instead of TemplateBinding in order to perform relative property binding within a template.

コントロールテンプレートを概念として記述する方法については、ここでは説明しません。詳細については、「コントロールのスタイルとテンプレート」を参照してください。Describing control templates as a concept is not covered here; for more information, see Control Styles and Templates.

属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。Attribute syntax is the most common syntax used with this markup extension. TemplateBinding 識別子文字列の後に設定される文字列トークンは、基になる Property 拡張クラスの TemplateBindingExtension 値として割り当てられます。The string token provided after the TemplateBinding identifier string is assigned as the Property value of the underlying TemplateBindingExtension extension class.

オブジェクト要素構文を使用することもできますが、現実的な用途がないためここでは触れません。Object element syntax is possible, but it is not shown because it has no realistic application. TemplateBinding は、評価された式を使用して setter 内で値を埋め込むために使用され、TemplateBinding を使用する場合、TemplateBinding が <Setter.Property> プロパティ要素構文を埋め込むためのオブジェクト要素構文は、必要以上に詳細です。TemplateBinding is used to fill values within setters, using evaluated expressions, and using object element syntax for TemplateBinding to fill <Setter.Property> property element syntax is unnecessarily verbose.

TemplateBinding は、Property プロパティをプロパティおよび値のペアとして指定する詳細出力属性使用でも使用できます。TemplateBinding can also be used in a verbose attribute usage that specifies the Property property as a property=value pair:

<object property="{TemplateBinding Property=sourceProperty}" .../>  

詳細出力の使用は、複数の設定可能プロパティを持つ拡張機能や、一部のプロパティがオプションである場合に役立ちます。The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. TemplateBinding には、必須の設定可能プロパティが 1 つしか存在しないため、このような詳細出力の使用は一般的ではありません。Because TemplateBinding has only one settable property, which is required, this verbose usage is not typical.

WPFWPF XAML プロセッサの実装では、このマークアップ拡張機能の処理は TemplateBindingExtension クラスによって定義されます。In the WPFWPF XAML processor implementation, the handling for this markup extension is defined by the TemplateBindingExtension class.

TemplateBinding はマークアップ拡張機能です。TemplateBinding is a markup extension. 一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラー名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバーターを適用するだけにとどまらない場合です。Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. XAML のすべてのマークアップ拡張は、属性構文で {} 文字を使用します。これは、マークアップ拡張機能が属性を処理する必要があることを XAML プロセッサが認識する規則です。All markup extensions in XAML use the { and } characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must process the attribute. 詳細については、「マークアップ拡張機能」および「WPF XAML」を参照してください。For more information, see Markup Extensions and WPF XAML.

関連項目See also