TemplateBinding-MarkuperweiterungTemplateBinding Markup Extension

Verknüpft den Wert einer Eigenschaft in einer Steuerelementvorlage so, dass er der Wert einer anderen Eigenschaft des Steuerelements mit Vorlagen ist.Links the value of a property in a control template to be the value of another property on the templated control.

Verwendung von XAML-AttributenXAML Attribute Usage

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

Verwendung von XAML-Attributen (für Setter-Eigenschaft in Vorlage oder Stil)XAML Attribute Usage (for Setter property in template or style)

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

XAML-WerteXAML Values

propertyName DependencyProperty.Name der Eigenschaft, der in der Setter-Syntax festgelegt wird.DependencyProperty.Name of the property being set in the setter syntax.
sourceProperty Eine weitere Abhängigkeitseigenschaft für den auf Vorlagen basierenden Typ, die durch ihren DependencyProperty.Name angegeben wird.Another dependency property that exists on the type being templated, specified by its DependencyProperty.Name.

- oder -- or -

Ein Eigenschaftenname in Punktnotation, der durch einen anderen Typ als den auf Vorlagen basierenden Zieltyp definiert wird.A "dotted-down" property name that is defined by a different type than the target type being templated. Hierbei handelt es sich eigentlich um einen PropertyPath.This is actually a PropertyPath. Siehe PropertyPath-XAML-Syntax.See PropertyPath XAML Syntax.

HinweiseRemarks

Eine TemplateBinding ist eine optimierte Form einer Bindung für Vorlagen Szenarien, analog zu einer mit {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}erstellten 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}. Eine TemplateBinding ist immer eine unidirektionale Bindung, auch wenn die betroffenen Eigenschaften standardmäßig bidirektionale Bindungen sind.A TemplateBinding is always a one-way binding, even if properties involved default to two-way binding. Beide betroffenen Eigenschaften müssen Abhängigkeitseigenschaften sein.Both properties involved must be dependency properties. Um eine bidirektionale Bindung mit einem übergeordneten Element zu erreichen, verwenden Sie stattdessen die folgende Bindungs Anweisung {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 ist eine andere Markup Erweiterung, die manchmal in Verbindung mit oder anstelle von TemplateBinding verwendet wird, um eine relative Eigenschaften Bindung innerhalb einer Vorlage auszuführen.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.

Das Beschreiben von Steuerelement Vorlagen als Konzept wird hier nicht behandelt. Weitere Informationen finden Sie unter Steuerelement Stile und-Vorlagen.Describing control templates as a concept is not covered here; for more information, see Control Styles and Templates.

Die Attributsyntax ist die mit dieser Markuperweiterung am häufigsten verwendete Syntax.Attribute syntax is the most common syntax used with this markup extension. Das Zeichenfolgentoken, das auf die TemplateBinding-Bezeichnerzeichenfolge folgt, wird als Property-Wert der zugrunde liegenden TemplateBindingExtension-Erweiterungsklasse zugeordnet.The string token provided after the TemplateBinding identifier string is assigned as the Property value of the underlying TemplateBindingExtension extension class.

Die Objektelementsyntax ist zwar möglich, wird jedoch nicht gezeigt, da sie keine realistische Anwendung hat.Object element syntax is possible, but it is not shown because it has no realistic application. TemplateBinding wird verwendet, um Werte mithilfe von ausgewerteten Ausdrücken innerhalb von Settern zu füllen. Die Verwendung der Objektelementsyntax für TemplateBinding zum Füllen der <Setter.Property>-Eigenschaftenelementsyntax ist unnötig ausführlich.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 kann zudem in einer ausführlichen Attributverwendung verwendet werden, die die Property-Eigenschaft als Eigenschaft=Wert-Paar angibt: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}" .../>  

Die ausführliche Verwendung ist häufig hilfreich, wenn für eine Erweiterung mehr als eine Eigenschaft festgelegt werden kann oder wenn bestimmte Eigenschaften optional sind.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. Da für TemplateBinding nur eine (erforderliche) Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.Because TemplateBinding has only one settable property, which is required, this verbose usage is not typical.

In der WPFWPF XAML-Prozessor Implementierung wird die Handhabung dieser Markup Erweiterung durch die TemplateBindingExtension-Klasse definiert.In the WPFWPF XAML processor implementation, the handling for this markup extension is defined by the TemplateBindingExtension class.

TemplateBinding ist eine Markuperweiterung.TemplateBinding is a markup extension. Markuperweiterungen werden in der Regel implementiert, wenn Attributwerte mit Escapezeichen versehen werden müssen, damit diese nicht als literale Werte oder als Handlernamen betrachtet werden, und diese Anforderung eher global und nicht nur durch den Einsatz von Typkonvertern für bestimmte Typen oder Eigenschaften erfüllt werden soll.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. Alle Markup Erweiterungen in XAML verwenden die {-und } Zeichen in der Attribut Syntax. Dies ist die Konvention, mit der ein XAML-Prozessor erkennt, dass das Attribut von einer Markup Erweiterung verarbeitet werden muss.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. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.For more information, see Markup Extensions and WPF XAML.

Siehe auchSee also