Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verknüpft den Wert einer Eigenschaft in einer Steuerelementvorlage so, dass er der Wert einer anderen Eigenschaft des Steuerelements mit Vorlagen ist.
Verwendung von XAML-Attributen
<object property="{TemplateBinding sourceProperty}" ... />
Verwendung von XAML-Attributen (für Setter-Eigenschaft in Vorlage oder Formatvorlage)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
XAML-Werte
Wert | BESCHREIBUNG |
---|---|
propertyName |
DependencyProperty.Name der Eigenschaft, der in der Setter-Syntax festgelegt wird. |
sourceProperty |
Eine weitere Abhängigkeitseigenschaft für den auf Vorlagen basierenden Typ, die durch ihren DependencyProperty.Name angegeben wird. -oder- Ein Eigenschaftenname in Punktnotation, der durch einen anderen Typ als den auf Vorlagen basierenden Zieltyp definiert wird. Hierbei handelt es sich eigentlich um einen PropertyPath. Siehe XAML-Syntax von PropertyPath. |
Bemerkungen
Eine TemplateBinding
ist die optimierte Form einer Binding
für Vorlagenszenarios, die einer mit Binding
erstellten {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
entspricht. Eine TemplateBinding
ist immer eine unidirektionale Bindung, auch wenn die betroffenen Eigenschaften standardmäßig bidirektionale Bindungen sind. Beide beteiligten Eigenschaften müssen Abhängigkeitseigenschaften sein. Um eine bidirektionale Bindung an ein vorlagenbasiertes übergeordnetes Element zu erreichen, verwenden Sie stattdessen die Bindungsanweisung {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}
.
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 hier nicht behandelt; weitere Informationen finden Sie unter Steuerelementstile und -vorlagen.
Attributsyntax ist die am häufigsten verwendete Syntax für diese Markuperweiterung. Das Zeichenfolgentoken, das auf die TemplateBinding
-Bezeichnerzeichenfolge folgt, wird als Property-Wert der zugrunde liegenden TemplateBindingExtension-Erweiterungsklasse zugeordnet.
Die Objektelementsyntax ist möglich, wird jedoch nicht angezeigt, da sie keine realistische Anwendung aufweist.
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=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. 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 Behandlung dieser Markup-Erweiterung durch die TemplateBindingExtension-Klasse definiert.
TemplateBinding
ist eine Markup-Erweiterung. Markuperweiterungen werden typischerweise implementiert, wenn Attributwerte von den reinen Literalwerten oder Handlernamen abweichen müssen und diese Anforderung globaler ist, als nur Typkonverter für bestimmte Typen oder Eigenschaften zu verwenden. Alle Markuperweiterungen in XAML verwenden die zeichen {
und }
in ihrer Attributsyntax. Dies ist die Konvention, mit der ein XAML-Prozessor erkennt, dass eine Markuperweiterung das Attribut verarbeiten muss. Weitere Informationen finden Sie unter Markuperweiterungen und WPF-XAML.
Siehe auch
.NET Desktop feedback