TemplateBinding-Markuperweiterung
Verknüpft den Wert einer Eigenschaft in einer Steuerelementvorlage mit dem Wert einer Eigenschaft für das auf Vorlagen basierende Steuerelement.
Verwendung von XAML-Attributen
<object property="{TemplateBinding targetProperty}" .../>
Verwendung von XAML-Attributen (für Setter-Eigenschaft in Vorlage oder Stil)
<Setter Property="propertyName" Value="{TemplateBinding targetProperty}" .../>
XAML-Werte
propertyName |
Der DependencyProperty.Name der Eigenschaft, der in der Setter-Syntax festgelegt wird. |
targetProperty |
Eine Abhängigkeitseigenschaft für den auf Vorlagen basierenden Typ, die durch ihren DependencyProperty.Name angegeben wird. - oder - Ein hierarchischer Eigenschaftenname in Punktnotation, der durch einen anderen Typ als den auf Vorlagen basierenden Zieltyp definiert wird. Hierbei handelt es sich eigentlich um einen PropertyPath. Weitere Informationen finden Sie unter XAML-Syntax von PropertyPath. |
Hinweise
Eine TemplateBinding ist die optimierte Form einer Bindung für Vorlagenszenarios, die einer mit {Binding RelativeSource={RelativeSource TemplatedParent}} erstellten Binding entspricht.
RelativeSource ist eine weitere Markuperweiterung, die gelegentlich in Verbindung mit oder anstelle von TemplateBinding verwendet wird, um eine relative Eigenschaftenbindung in einer Vorlage auszuführen.
Die Beschreibung von Steuerelementvorlagen als Konzept wird in diesem Thema nicht behandelt. Weitere Informationen finden Sie unter Control-Stile und -Vorlagen.
Die Attributsyntax ist die mit dieser Markuperweiterung am häufigsten verwendete Syntax. Das Zeichenfolgentoken, das auf die TemplateBinding-Bezeichnerzeichenfolge folgt, wird als Property-Wert der zugrunde liegenden TemplateBindingExtension-Erweiterungsklasse zugeordnet.
Die Objektelementsyntax ist zwar möglich, wird jedoch nicht gezeigt, da sie keine realistische Anwendung hat. 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 kann zudem in einer ausführlichen Attributverwendung verwendet werden, die die Property-Eigenschaft als Eigenschaft/Wert-Paar angibt:
<object property="{TemplateBinding Property=targetProperty}" .../>
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. Da für TemplateBinding nur eine (erforderliche) Eigenschaft festgelegt werden kann, ist diese ausführliche Verwendung unüblich.
In der WPF-XAML-Prozessorimplementierung wird die Handhabung dieser Markuperweiterung durch die TemplateBindingExtension-Klasse definiert.
TemplateBinding ist eine Markuperweiterung. 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. Alle Markuperweiterungen in XAML verwenden die Zeichen { und } in der Attributsyntax. Dies ist die Konvention, durch die ein XAML-Prozessor erkennt, dass das Attribut von einer Markuperweiterung verarbeitet werden muss. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.
Siehe auch
Referenz
RelativeSource-Markuperweiterung