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 mit dem Wert einer anderen verfügbar gemachten Eigenschaft im vorlagenbasierten Steuerelement. TemplateBinding kann nur in einer ControlTemplate-Definition in XAML verwendet werden.
XAML-Attributverwendung
<object propertyName="{TemplateBinding sourceProperty}" .../>
XAML-Attributverwendung (für Setter-Eigenschaft in Template oder Stil)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>
XAML-Werte
| Begriff | Description |
|---|---|
| Eigenschaftsname | Der Name der Eigenschaft, die in der Settersyntax festgelegt wird. Dies muss eine Abhängigkeitseigenschaft sein. |
| Quelleneigenschaft | Der Name einer anderen Abhängigkeitseigenschaft, die für den typisierten Vorlagentyp existiert. |
Bemerkungen
Die Verwendung von TemplateBinding ist ein grundlegender Bestandteil der Definition einer Steuerelementvorlage, entweder wenn Sie ein benutzerdefinierter Steuerelementautor sind oder eine Steuerelementvorlage für vorhandene Steuerelemente ersetzen. Weitere Informationen finden Sie unter Steuerelementvorlagen.
Für propertyName und targetProperty wird häufig derselbe Eigenschaftsname verwendet. In diesem Fall kann ein Steuerelement eine Eigenschaft für sich selbst definieren und die Eigenschaft an eine vorhandene und intuitiv benannte Eigenschaft eines seiner Komponententeile weiterleiten. Beispielsweise kann ein Steuerelement, das einen TextBlock in seine Compositing integriert, das zum Anzeigen der eigenen Texteigenschaft des Steuerelements verwendet wird, diesen XAML-Code als Teil in der Steuerelementvorlage enthalten: <TextBlock Text="{TemplateBinding Text}" .... />
Die Typen, die als Wert für die Quelleigenschaft und die Zieleigenschaft verwendet werden, müssen übereinstimmen. Es gibt keine Möglichkeit, einen Konverter einzuführen, wenn Sie TemplateBinding verwenden. Fehler beim Analysieren von XAML-Code durch nicht übereinstimmende Werte. Wenn Sie einen Konverter benötigen, können Sie die ausführliche Syntax für eine Vorlagenbindung verwenden, z. B.: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}
Der Versuch, eine TemplateBinding außerhalb einer ControlTemplate-Definition in XAML zu verwenden, führt zu einem Parserfehler.
Sie können TemplateBinding für Fälle verwenden, in denen der Wert des verknüpften übergeordneten Objekts auch auf eine andere Bindung verschoben wird. Die Auswertung für TemplateBinding kann warten, bis alle erforderlichen Laufzeitbindungen Werte aufweisen.
Ein TemplateBinding ist immer eine unidirektionale Bindung. Beide beteiligten Eigenschaften müssen Abhängigkeitseigenschaften sein.
TemplateBinding ist eine Markuperweiterung. Markuperweiterungen werden normalerweise implementiert, wenn es nötig ist, Attributwerte so umzuwandeln, dass sie keine reinen Literalwerte oder Handlernamen sind, und die Anforderung umfassender ist als nur das Platzieren von Typkonvertern für bestimmte Typen oder Eigenschaften. 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.
Anmerkung In der Xaml-Prozessorimplementierung der Windows-Runtime gibt es keine Sicherungsklassendarstellung für TemplateBinding. TemplateBinding ist ausschließlich für die Verwendung im XAML-Markup vorgesehen. Es gibt keine einfache Möglichkeit, das Verhalten im Code zu reproduzieren.
x:Bind in ControlTemplate
Hinweis
Die Verwendung von x:Bind in einer ControlTemplate erfordert Windows 10, Version 1809 (SDK 17763) oder höher. Weitere Informationen zu Zielversionen finden Sie unter Versionsadaptiven Code.
Ab Windows 10, Version 1809, können Sie die x:Bind-Markuperweiterung überall verwenden, wo Sie TemplateBinding in einer ControlTemplate verwenden.
Die TargetType-Eigenschaft ist für ControlTemplate bei Verwendung von x:Bind (nicht optional) erforderlich.
Mit x:Bind-Unterstützung können Sie sowohl Funktionsbindungen als auch bidirektionale Bindungen in einer ControlTemplate verwenden.
In diesem Beispiel wird die TextBlock.Text-Eigenschaft als Button.Content.ToString ausgewertet. Der TargetType der ControlTemplate fungiert als Datenquelle und erzielt dasselbe Ergebnis wie ein TemplateBinding an das übergeordnete Element.
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
</Grid>
</ControlTemplate>
Zugehörige Themen
Windows developer