Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Propojí hodnotu vlastnosti v šabloně ovládacího prvku s hodnotou jiné vystavené vlastnosti na tvarovaném ovládacím prvku. TemplateBinding lze použít pouze v rámci definice ControlTemplate v XAML.
Použití atributu XAML
<object propertyName="{TemplateBinding sourceProperty}" .../>
Použití atributu XAML (pro vlastnost Setter v šabloně nebo stylu)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>
Hodnoty XAML
| Term | Description |
|---|---|
| propertyName | Název vlastnosti, která se nastavuje v syntaxi setter. Musí se jednat o vlastnost závislosti. |
| sourceProperty | Název jiné vlastnosti závislosti, která existuje na typu, jenž je součástí šablony. |
Poznámky
Použití šablony TemplateBinding je základní součástí způsobu definování šablony ovládacího prvku, a to buď v případě, že jste autor vlastního ovládacího prvku, nebo pokud nahrazujete šablonu ovládacího prvku pro existující ovládací prvky. Další informace najdete v tématu Řídicí šablony.
Je poměrně běžné, že vlastnostName a targetProperty používají stejný název vlastnosti. V tomto případě může ovládací prvek definovat vlastnost sama o sobě a předat vlastnost existující a intuitivně pojmenované vlastnosti jedné z jeho součástí. Například ovládací prvek, který zahrnuje TextBlock v jeho kompozitingu, který se používá k zobrazení vlastní textové vlastnosti ovládacího prvku, může zahrnovat tento XAML jako součást šablony ovládacího prvku: <TextBlock Text="{TemplateBinding Text}" .... />
Typy použité jako hodnota zdrojové vlastnosti a cílová vlastnost se musí shodovat. Při používání TemplateBinding není možné zavést převaděč. Došlo k chybě při analýze XAML z důvodu neshody hodnot. Pokud potřebujete převaděč, můžete pro vazbu šablony použít podrobnou syntaxi, například: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}
Při pokusu o použití TemplateBinding mimo definici ControlTemplate v JAZYCE XAML dojde k chybě analyzátoru.
Můžete použít TemplateBinding pro případy, kdy je hodnota nadřazené šablony také odložena jako jiná vazba. Vyhodnocení pro TemplateBinding může počkat, dokud nebudou mít požadované běhové vazby hodnoty.
TemplateBinding je vždy jednosměrná vazba. Obě zahrnuté vlastnosti musí být vlastnosti závislosti.
TemplateBinding je rozšíření značkování. Rozšíření značek se obvykle implementují, pokud existuje požadavek, aby hodnoty atributů byly jiné než literální hodnoty nebo názvy handlerů, a požadavek je globálnější než jen vkládání převaděčů typů na určité typy nebo vlastnosti. Všechna rozšíření značek v XAML používají znaky {a "}" v syntaxi atributů, což je konvence, kterou procesor XAML rozpozná, že rozšíření značek musí atribut zpracovat.
Poznámka V implementaci procesoru XAML prostředí Windows Runtime neexistuje žádná reprezentace třídy backing pro TemplateBinding. TemplateBinding je výhradně pro použití v kódu XAML. Neexistuje jednoduchý způsob, jak reprodukovat chování v kódu.
x:Bind v rámci ControlTemplate
Poznámka:
Použití x:Bind v ControlTemplate vyžaduje Windows 10 verze 1809 (SDK 17763) nebo novější. Další informace o cílových verzích najdete v tématu Adaptivní kód verze.
Počínaje Windows 10 verze 1809 můžete použít značkové rozšíření x:Bind kdekoli použijete TemplateBinding v ControlTemplate.
Při použití x:Bind je u ControlTemplate vyžadována vlastnost TargetType (není volitelná).
S podporou x:Bind můžete v ControlTemplate použít obě vazby funkcí i obousměrné vazby.
V tomto příkladu se Vlastnost TextBlock.Text vyhodnotí jako Button.Content.ToString. TargetType v ControlTemplate funguje jako zdroj dat a dosahuje stejného výsledku jako TemplateBinding k nadřazenému prvku.
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
</Grid>
</ControlTemplate>
Související témata
Windows developer