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. Finden Sie unter "PropertyPath"-XAML-Syntax.See PropertyPath XAML Syntax.

HinweiseRemarks

Ein TemplateBinding ist eine optimierte Form der eine Bindung für Vorlagenszenarios, analog zu einem Binding mit erstellt {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}}. 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 zu erreichen bidirektionale Bindung an einem vorlagenbasierten übergeordneten Element stattdessen die folgende bindungsanweisung {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 weitere Markuperweiterung, die manchmal in Verbindung mit oder anstelle von dient TemplateBinding um relative eigenschaftenbindung in 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.

Beschreiben von Steuerelementvorlagen als ein Konzept ist hier nicht behandelt; Weitere Informationen finden Sie unter Steuerelementformate 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-prozessorimplementierung wird die Handhabung dieser Markuperweiterung wird definiert, indem die TemplateBindingExtension Klasse.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 Markuperweiterungen in XAML verwenden die { und } Zeichen in der Attributsyntax, dies ist die Konvention mit dem ein XAML-Prozessor erkannt wird, dass das Attribut von eine Markuperweiterung 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