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.


ATemplateBindingの最適化された形には、バインドテンプレート シナリオの場合に似ています、Bindingを使用して構築{Binding RelativeSource={RelativeSource TemplatedParent}}します。A TemplateBinding is an optimized form of a Binding for template scenarios, analogous to a Binding constructed with {Binding RelativeSource={RelativeSource TemplatedParent}}. 関連するプロパティが既定で双方向のバインディングの場合でも、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 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