Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Vincula o valor de uma propriedade em um modelo de controle ao valor de alguma outra propriedade exposta no controle modelo. TemplateBinding só pode ser usado dentro de uma definição ControlTemplate em XAML.
Uso do atributo XAML
<object propertyName="{TemplateBinding sourceProperty}" .../>
Uso do atributo XAML (para a propriedade Setter no modelo ou estilo)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>
Valores XAML
| Prazo | Description |
|---|---|
| propertyName | O nome da propriedade que está sendo definida na sintaxe setter. Essa deve ser uma propriedade de dependência. |
| sourceProperty | O nome de outra propriedade de dependência que existe no tipo que está sendo modelo. |
Observações
Usar TemplateBinding é uma parte fundamental de como você define um modelo de controle, seja se você for um autor de controle personalizado ou se estiver substituindo um modelo de controle por controles existentes. Para obter mais informações, consulte modelos de controle.
É bastante comum que propertyName e targetProperty usem o mesmo nome de propriedade. Nesse caso, um controle pode definir uma propriedade em si mesmo e encaminhar a propriedade para uma propriedade existente e intuitivamente nomeada de uma de suas partes componentes. Por exemplo, um controle que incorpora um TextBlock em sua composição, que é usada para exibir a própria propriedade Text do controle, pode incluir esse XAML como parte no modelo de controle: <TextBlock Text="{TemplateBinding Text}" .... />
Os tipos usados como o valor para a propriedade de origem e a propriedade de destino devem corresponder. Não há nenhuma oportunidade de introduzir um conversor quando você estiver usando TemplateBinding. A falha em corresponder valores resulta em um erro na análise do XAML. Se você precisar de um conversor, poderá usar a sintaxe detalhada para uma associação de modelo, como: {Binding RelativeSource={RelativeSource TemplatedParent}, Converter="..." ...}
A tentativa de usar um TemplateBinding fora de uma definição ControlTemplate em XAML resultará em um erro de analisador.
Você pode usar TemplateBinding para casos em que o valor do pai modelado também é adiado como outro vinculo. A avaliação de TemplateBinding pode aguardar até que todas as associações de runtime necessárias tenham valores.
Um TemplateBinding é sempre uma associação unidirecional. Ambas as propriedades envolvidas devem ser propriedades de dependência.
TemplateBinding é uma extensão de marcação. As extensões de marcação normalmente são implementadas quando há um requisito para escapar de valores de atributo que não sejam valores literais ou nomes de manipulador, e o requisito é mais global do que apenas colocar conversores de tipo em determinados tipos ou propriedades. Todas as extensões de marcação no XAML usam os caracteres "{" e "}" em sua sintaxe de atributo, que é a convenção pela qual um processador XAML reconhece que uma extensão de marcação deve processar o atributo.
Nota Na implementação do processador XAML do Windows Runtime, não há representação de classe de backup para TemplateBinding. TemplateBinding é exclusivamente usado na marcação XAML. Não há uma maneira simples de reproduzir o comportamento no código.
x:Bind no ControlTemplate
Observação
Usar x:Bind em um ControlTemplate requer o Windows 10, versão 1809 (SDK 17763) ou posterior. Para obter mais informações sobre versões de destino, consulte o código adaptável de versão.
A partir do Windows 10, versão 1809, você pode usar a extensão de marcação x:Bind onde quer que você utilize TemplateBinding em um ControlTemplate.
A propriedade TargetType é necessária (não opcional) em ControlTemplate ao usar x:Bind.
Com o suporte x:Bind , você pode usar associações de função , bem como associações bidirecionais em um ControlTemplate.
Neste exemplo, a propriedade TextBlock.Text é avaliada como Button.Content.ToString. O TargetType no ControlTemplate atua como a fonte de dados e realiza o mesmo resultado de um TemplateBinding para pai.
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock Text="{x:Bind Content, Mode=OneWay}"/>
</Grid>
</ControlTemplate>
Tópicos relacionados
Windows developer