Extensão de marcação TemplateBinding
Vincula o valor de uma propriedade em um modelo de controle para ser o valor de outra propriedade no controle modelo.
Uso do atributo XAML
<object property="{TemplateBinding sourceProperty}" ... />
Uso do atributo XAML (para a propriedade Setter no modelo ou estilo)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
Valores XAML
Valor | Descrição |
---|---|
propertyName |
DependencyProperty.Name da propriedade que está sendo definida na sintaxe setter. |
sourceProperty |
Outra propriedade de dependência que existe no tipo que está sendo templetada, especificada por seu DependencyProperty.Name. - ou - Um nome de propriedade "pontilhado para baixo" definido por um tipo diferente do tipo de destino que está sendo modelo. Na verdade, isso é um PropertyPath. Consulte PropertyPathde sintaxe XAML. |
Observações
Um TemplateBinding
é uma forma otimizada de um Binding
para cenários de modelo, análogo a um Binding
construído com {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
. Um TemplateBinding
é sempre uma associação unidirecional, mesmo que as propriedades por padrão sejam de associação bidirecional. Ambas as propriedades envolvidas devem ser propriedades de dependência. Para obter a associação bidirecional para um pai modelo, use a seguinte instrução de associação em vez de {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}
.
RelativeSource é outra extensão de marcação que às vezes é usada em conjunto com ou em vez de TemplateBinding
para executar a associação de propriedade relativa dentro de um modelo.
Descrever modelos de controle como um conceito não é abordado aqui; para obter mais informações, consulte estilos de controle e modelos.
A sintaxe do atributo é a sintaxe mais comum usada com essa extensão de marcação. O token fornecido após o identificador TemplateBinding
é atribuído como o valor Property da classe de extensão TemplateBindingExtension subjacente.
A sintaxe do elemento de objeto é possível, mas não é mostrada porque não tem nenhum aplicativo realista. TemplateBinding
é usado para preencher valores dentro de setters, usando expressões avaliadas e usando a sintaxe de elemento de objeto para TemplateBinding
para preencher a sintaxe de elemento de propriedade de <Setter.Property>
é desnecessariamente detalhada.
TemplateBinding
também pode ser usado em um uso de atributo detalhado que especifica a propriedade Property como um par propriedade=valor.
<object property="{TemplateBinding Property=sourceProperty}" ... />
O uso verboso é frequentemente útil para extensões que têm mais de uma propriedade configurável, ou quando algumas propriedades são opcionais. Como TemplateBinding
tem apenas uma propriedade configurável obrigatória, esse uso detalhado não é típico.
Na implementação do processador XAML do WPF, a manipulação dessa extensão de marcação é definida pela classe TemplateBindingExtension.
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. Para obter mais informações, consulte Extensões de Marcação eXAML do WPF.
Consulte também
- Style
- ControlTemplate
- Estilização e Modelagem
- XAML no WPF
- Extensões de marcação e XAML do WPF
- Extensão de Marca de Fonte Relativa
- Extensão de Marcações de Vinculação
.NET Desktop feedback