TemplateBinding マークアップ拡張機能
コントロール テンプレート内のプロパティの値を、テンプレート 化されたコントロールの別のプロパティの値にリンクします。
XAML 属性の使用法
<object property="{TemplateBinding sourceProperty}" ... />
XAML 属性の使用法 (テンプレートまたはスタイルの Setter プロパティの場合)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
XAML 値
価値 | 説明 |
---|---|
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
と組み合わせて使用される場合もあれば、代わりに使用されるマークアップ拡張機能です。
コントロール テンプレートを概念として説明する方法については、ここでは説明しません。詳細については、「コントロールのスタイルとテンプレートの」を参照してください。
属性構文は、このマークアップ拡張で使用される最も一般的な構文です。 TemplateBinding
識別子文字列の後に指定された文字列トークンは、基になる TemplateBindingExtension 拡張クラスの Property 値として割り当てられます。
オブジェクト要素の構文は可能ですが、現実的なアプリケーションがないため、表示されません。 TemplateBinding
は、評価された式を使用して setter 内で値を埋め込むために使用され、TemplateBinding
を使用する場合、TemplateBinding が <Setter.Property>
プロパティ要素構文を埋め込むためのオブジェクト要素構文は、必要以上に詳細です。
TemplateBinding
は、Property プロパティをプロパティ=バリューのペアとして指定する冗長な属性の使い方でも使用できます。
<object property="{TemplateBinding Property=sourceProperty}" ... />
詳細な使用方法は、多くの場合、複数の設定可能なプロパティを持つ拡張機能や、一部のプロパティが省略可能な場合に役立ちます。 TemplateBinding
には必須の設定可能なプロパティが 1 つしかないため、この冗長な使い方は一般的ではありません。
WPF XAML プロセッサの実装では、このマークアップ拡張機能の処理は、TemplateBindingExtension クラスによって定義されます。
TemplateBinding
はマークアップ拡張機能です。 マークアップ拡張は通常、リテラル値またはハンドラー名以外の属性値をエスケープする必要があり、特定の型またはプロパティに型コンバーターを配置するよりもグローバルな要件である場合に実装されます。 XAML のすべてのマークアップ拡張では、属性構文で {
文字と }
文字が使用されます。これは、マークアップ拡張機能が属性を処理する必要があることを XAML プロセッサが認識する規則です。 詳細については、「マークアップ拡張機能 WPF XAML」を参照してください。
関連項目
.NET Desktop feedback