Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Länkar värdet för en egenskap i en kontrollmall till värdet för någon annan exponerad egenskap i den mallade kontrollen. TemplateBinding kan bara användas i en ControlTemplate-definition i XAML.
XAML-attributanvändning
<object propertyName="{TemplateBinding sourceProperty}" .../>
XAML-attributanvändning (för egenskapen Setter i mall eller stil)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>
XAML-värden
| Begrepp | Description |
|---|---|
| propertyName | Namnet på egenskapen som anges i setter-syntaxen. Detta måste vara en beroendeegenskap. |
| sourceProperty | Namnet på en annan beroendeegenskap som finns på den typ som mallas. |
Anmärkningar
Att använda TemplateBinding är en grundläggande del av hur du definierar en kontrollmall, antingen om du är en anpassad kontrollförfattare eller om du ersätter en kontrollmall för befintliga kontroller. Mer information finns i Kontrollera mallar.
Det är ganska vanligt att propertyName och targetProperty använder samma egenskapsnamn. I det här fallet kan en kontroll definiera en egenskap på sig själv och vidarebefordra egenskapen till en befintlig och intuitivt namngiven egenskap för en av dess komponentdelar. Till exempel kan en kontroll som innehåller en TextBlock i dess sammansättning, som används för att visa kontrollens egen textegenskap, inkludera denna XAML som en del i kontrollmallen:<TextBlock Text="{TemplateBinding Text}" .... />
De typerna som används som värde för källegenskapen och målegenskapen måste överensstämma. Det finns ingen möjlighet att introducera en konverterare när du använder TemplateBinding. Om du inte matchar värdena uppstår ett fel vid parsning av XAML. Om du behöver en konverterare kan du använda den utförliga syntaxen för en mallbindning, till exempel: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}
Försök att använda en TemplateBinding utanför en ControlTemplate-definition i XAML resulterar i ett parserfel.
Du kan använda TemplateBinding för fall där det överordnade mallvärdet också skjuts upp som en annan bindning. Utvärderingen för TemplateBinding kan vänta tills alla nödvändiga körtidsbindningar har värden.
En TemplateBinding är alltid en enkelriktad bindning. Båda egenskaperna måste vara beroendeegenskaper.
TemplateBinding är ett tillägg för markering. Markeringstillägg implementeras vanligtvis när det finns ett krav på att escape-attributvärden ska vara andra än literalvärden eller hanterarnamn, och kravet är mer globalt än att bara placera typkonverterare på vissa typer eller egenskaper. Alla markeringstillägg i XAML använder tecknen "{" och "}" i attributsyntaxen, vilket är den konvention genom vilken en XAML-processor känner igen att ett markeringstillägg måste bearbeta attributet.
Observera I implementeringen av XAML-processorn i Windows Runtime finns det ingen stödklassrepresentation för TemplateBinding. TemplateBinding är exklusivt för användning i XAML-markering. Det finns inget enkelt sätt att återskapa beteendet i koden.
x:Bind i ControlTemplate
Anmärkning
Om du använder x:Bind i ett ControlTemplate krävs Windows 10, version 1809 (SDK 17763) eller senare. Mer information om målversioner finns i Versionsanpassad kod.
Från och med Windows 10 version 1809 kan du använda tillägget x:Bind markup var du än använder TemplateBinding i ett ControlTemplate.
Egenskapen TargetType krävs (inte valfritt) på ControlTemplate när du använder x:Bind.
Med stöd för x:Bind kan du använda både funktionsbindningar och tvåvägsbindningar i en ControlTemplate.
I det här exemplet utvärderas egenskapen TextBlock.Text till Button.Content.ToString. TargetType på ControlTemplate fungerar som datakälla och uppnår samma resultat som en TemplateBinding till ett föräldraelement.
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
</Grid>
</ControlTemplate>
Relaterade ämnen
Windows developer