Mallbindningstillägg
Länkar värdet för en egenskap i en kontrollmall till värdet för en annan egenskap i den mallade kontrollen.
XAML-attributanvändning
<object property="{TemplateBinding sourceProperty}" ... />
XAML-attributanvändning (för egenskapen Setter i mall eller stil)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
XAML-värden
Värde | Beskrivning |
---|---|
propertyName |
DependencyProperty.Name för egenskapen som anges i setter-syntaxen. |
sourceProperty |
En annan beroendeegenskap som finns på den typ som mallas, som anges av dess DependencyProperty.Name. -eller- Ett "punktat" egenskapsnamn som definieras av en annan typ än den måltyp som mallanpassas. Det här är faktiskt en PropertyPath. Se PropertyPath XAML-syntax. |
Anmärkningar
En TemplateBinding
är en optimerad form av en Binding
för mallscenarier, som motsvarar en Binding
som konstruerats med {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
. En TemplateBinding
är alltid en enkelriktad bindning, även om de involverade egenskaperna som standard är tvåvägsbindningar. Båda egenskaperna måste vara beroendeegenskaper. För att uppnå dubbelriktad bindning till en mallad överordnad använder du följande bindningsuttryck i stället {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}
.
RelativeSource är ett annat tillägg som ibland används tillsammans med eller i stället för TemplateBinding
för att utföra relativ egenskapsbindning i en mall.
Här beskrivs inte beskrivningen av kontrollmallar som ett begrepp. Mer information finns i Kontrollformat och mallar.
Attributsyntax är den vanligaste syntaxen som används med det här markeringstillägget. Strängtoken som tillhandahålls efter TemplateBinding
-identifierarsträngen tilldelas som Property-värdet i den underliggande TemplateBindingExtension-förlängningsklassen.
Objektelementsyntax är möjlig, men den visas inte eftersom den inte har något realistiskt program.
TemplateBinding
används för att fylla värden i setters, använda utvärderade uttryck och använda objektelementsyntax för TemplateBinding
för att fylla <Setter.Property>
egenskapselementsyntax är onödigt utförligt.
TemplateBinding
kan också användas i en utförlig attributanvändning som anger egenskapen Property som ett egenskap=värdepar:
<object property="{TemplateBinding Property=sourceProperty}" ... />
Den utförliga användningen är ofta användbar för tillägg som har mer än en inställningsbar egenskap, eller om vissa egenskaper är valfria. Eftersom TemplateBinding
bara har en inställningsbar egenskap, vilket krävs, är den här utförliga användningen inte typisk.
I WPF XAML-processorimplementeringen definieras hanteringen för det här påläggstillägget av klassen TemplateBindingExtension.
TemplateBinding
är en markup-förlängning. 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 markupförlängningar i XAML använder tecknen {
och }
i attributsyntaxen, vilket är den konvention som en XAML-processor använder för att känna igen att en markupförlängning måste bearbeta attributet. Mer information finns i Markup Extensions and WPF XAML.
Se även
.NET Desktop feedback