{TemplateBinding} jelölőkiterjesztés

Összekapcsolja egy vezérlősablon tulajdonságának értékét a sablonalapú vezérlő más közzétett tulajdonságának értékével. A TemplateBinding csak az XAML ControlTemplate-definíciójában használható.

XAML-attribútumok használata

<object propertyName="{TemplateBinding sourceProperty}" .../>

XAML attribútum használata (Setter tulajdonság a sablonban vagy a stílusban)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>

XAML-értékek

Időszak Description
propertyName A beállító szintaxisban beállított tulajdonság neve. Ennek függőségi tulajdonságnak kell lennie.
forrástulajdonság Egy másik függőségi tulajdonság neve, amely a sablonozott típuson található.

Megjegyzések

A TemplateBinding használata alapvető része annak, hogyan definiálhat vezérlősablonokat, akár egyéni vezérlőelem-szerző, akár meglévő vezérlőkre cserél egy vezérlősablont. További információ: Vezérlősablonok.

A propertyName és a targetProperty esetében meglehetősen gyakori, hogy ugyanazt a tulajdonságnevet használják. Ebben az esetben egy vezérlő meghatározhat egy tulajdonságot önmagában, és továbbíthatja a tulajdonságot az egyik összetevőjének meglévő és intuitív nevesített tulajdonságára. Például egy olyan vezérlő, amely a szövegblokkot tartalmazza a szövegösszeírásban, amely a vezérlő saját Text tulajdonságának megjelenítésére szolgál, a vezérlősablon részeként a következő XAML-t is tartalmazhatja: <TextBlock Text="{TemplateBinding Text}" .... />

A forrástulajdonság és a céltulajdonság értékeként használt típusoknak meg kell egyeznie. A TemplateBinding használatakor nincs lehetőség konverter bevezetésére. Az értékek egyeztetésének sikertelensége hibát eredményez az XAML elemzésekor. Ha konverterre van szüksége, használhatja a sablonkötés részletes szintaxisát, például: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}

A ControlTemplate-definíción kívüli TemplateBinding XAML-ben való használatának megkísérlése elemzési hibát eredményez.

A TemplateBinding használható olyan esetekben, amikor a sablonos szülőérték másik kötés formájában is késleltetve van. A TemplateBinding kiértékelése megvárhatja, amíg a szükséges futtatókörnyezet-kötések értékekkel rendelkeznek.

A TemplateBinding mindig egyirányú kötés. Mindkét érintett tulajdonságnak függőségi tulajdonságoknak kell lennie.

A TemplateBinding egy korrektúrakiterjesztés. A korrektúrakiterjesztések általában akkor implementálódnak, ha az attribútumértékek nem konstansértékek vagy kezelőnevek, és a követelmény globálisabb, mint a típuskonverterek bizonyos típusok vagy tulajdonságok esetében való elhelyezése. Az XAML-ben az összes korrektúrakiterjesztés az attribútumszintaxisában a "{" és a "}" karaktert használja, ez az a konvenció, amellyel az XAML-feldolgozó felismeri, hogy egy korrektúrakiterjesztésnek fel kell dolgoznia az attribútumot.

Jegyzet A Windows-futtatókörnyezet XAML processzor implementációjában nincs háttérosztály-reprezentáció a TemplateBindinghez. A TemplateBinding kizárólag XAML-jelölésben használható. A kód viselkedésének reprodukálására nincs egyszerű módszer.

x:Kötés a ControlTemplate-ban

Megjegyzés:

Az x:Bind controlTemplate-ban való használatához a Windows 10 1809-es (SDK 17763) vagy újabb verziója szükséges. További információ a célverziókról: Adaptív verziókód.

A Windows 10 1809-es verziójától kezdve az x:Bind korrektúra bővítményt bárhol használhatja, ahol a TemplateBindinget használja a ControlTemplate-ban.

A TargetType tulajdonság megadása kötelező (nem opcionális) a ControlTemplate-ban x:Bind használatakor.

Az x:Kötés támogatásával a ControlTemplate-ban mindkét függvénykötést és kétirányú kötést használhatja.

Ebben a példában a TextBlock.Text tulajdonság a Button.Content.ToString értéket értékeli ki. A ControlTemplate TargetType tulajdonsága adatforrásként működik, és ugyanazt az eredményt éri el, mint egy TemplateBinding a szülőhöz.

<ControlTemplate TargetType="Button">
    <Grid>
        <TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
    </Grid>
</ControlTemplate>