TemplateBinding Markup-extensie
Hiermee wordt de waarde van een eigenschap in een besturingssjabloon gekoppeld aan de waarde van een andere eigenschap op het getemplate besturingselement.
XAML-kenmerkgebruik
<object property="{TemplateBinding sourceProperty}" ... />
XAML-kenmerkgebruik (voor setter-eigenschap in sjabloon of stijl)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
XAML-waarden
Waarde | Beschrijving |
---|---|
propertyName |
DependencyProperty.Name van de eigenschap die wordt ingesteld in de settersyntaxis. |
sourceProperty |
Een andere afhankelijkheidseigenschap die bestaat voor het type dat wordt gesjabloond, opgegeven door de DependencyProperty.Name. - of - Een eigenschapsnaam met een stippellijn die is gedefinieerd door een ander type dan het doeltype dat wordt gesjabloond. Dit is eigenlijk een PropertyPath. Zie PropertyPath XAML-syntaxis. |
Opmerkingen
Een TemplateBinding
is een geoptimaliseerde vorm van een Binding
voor sjabloonscenario's, vergelijkbaar met een Binding
gemaakt met {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
. Een TemplateBinding
is altijd een eenrichtingsbinding, zelfs als eigenschappen standaard een binding in twee richtingen hebben. Beide betrokken eigenschappen moeten afhankelijkheidseigenschappen zijn. Gebruik de volgende bindingsinstructie in plaats {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}
om tweerichtingsbindingen te maken voor een bovenliggende sjabloon.
RelativeSource is een andere markeringsextensie die soms wordt gebruikt in combinatie met of in plaats van TemplateBinding
om relatieve eigenschapsbinding in een sjabloon uit te voeren.
Het beschrijven van besturingssjablonen als concept wordt hier niet behandeld; Zie Besturingsstijlen en -sjablonenvoor meer informatie.
Kenmerksyntaxis is de meest voorkomende syntaxis die wordt gebruikt met deze markeringsextensie. Het tekenreekstoken dat na de TemplateBinding
id-tekenreeks is opgegeven, wordt toegewezen als de Property-waarde van de basis-TemplateBindingExtension-extensieklasse.
Objectelementsyntaxis is mogelijk, maar wordt niet weergegeven omdat het geen realistische toepassing heeft.
TemplateBinding
wordt gebruikt om waarden in te vullen binnen setters, door het gebruik van geëvalueerde expressies en de syntaxis van objectelementen. Het toepassen van de syntaxis van eigenschapselementen voor TemplateBinding
om <Setter.Property>
in te vullen is onnodig uitgebreid.
TemplateBinding
kan ook worden gebruikt in een uitgebreid kenmerkgebruik waarmee de eigenschap Property wordt opgegeven als een eigenschap=waardepaar:
<object property="{TemplateBinding Property=sourceProperty}" ... />
Het gedetailleerde gebruik is vaak handig voor extensies met meer dan één instelbare eigenschap of als sommige eigenschappen optioneel zijn. Omdat TemplateBinding
slechts één instelbare eigenschap heeft, die vereist is, is dergelijk gebruik niet gebruikelijk.
In de WPF XAML-processor-implementatie wordt de verwerking voor deze markeringsextensie gedefinieerd door de TemplateBindingExtension-klasse.
TemplateBinding
is een markeringsextensie. Markup-extensies worden doorgaans geïmplementeerd wanneer er een vereiste is om attribuutwaarden anders in te stellen dan letterlijke waarden of handlernamen, en de vereiste is meer globaal dan alleen het toepassen van typeconversies op bepaalde typen of eigenschappen. Alle markeringsextensies in XAML gebruiken de {
en }
tekens in hun kenmerksyntaxis. Dit is de conventie waarmee een XAML-processor herkent dat een markeringsextensie het kenmerk moet verwerken. Zie Markup Extensions en WPF XAMLvoor meer informatie.
Zie ook
.NET Desktop feedback