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 personalizado.
Uso do Atributo XAML
<object property="{TemplateBinding sourceProperty}" ... />
Uso do Atributo XAML (para propriedade Setter em um modelo ou estilo)
<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" ... />
Valores XAML
Valor | Descrição |
---|---|
propertyName |
DependencyProperty.Name da propriedade sendo definida na sintaxe setter. |
sourceProperty |
Outra propriedade de dependência que existe no tipo que está sendo personalizado, especificada por DependencyProperty.Name. - ou - Um nome de propriedade "pontilhado" definido por um tipo diferente do tipo de destino sendo personalizado. Isso é, na verdade, um PropertyPath. Consulte Sintaxe XAML de PropertyPath. |
Comentários
A TemplateBinding
é uma forma otimizada de um Binding
para cenários de modelo, análoga a um Binding
construído com {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}
. Um TemplateBinding
é sempre uma associação unidirecional, mesmo se as propriedades envolverem associação bidirecional padrão. Ambas as propriedades envolvidas devem ser propriedades de dependência. Para obter a vinculação bidirecional a um pai modelo, use a seguinte instrução de vinculação em vez disso {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 para executar a vinculação de propriedade relativa dentro de TemplateBinding
um modelo.
A descrição de modelos de controle como um conceito não é abordada aqui; para obter mais informações, consulte Estilos e modelos de controle.
A sintaxe de atributo é a sintaxe mais comum usada com essa extensão de marcação. O token da cadeia de caracteres fornecido após a cadeia de caracteres identificadora TemplateBinding
é atribuído como o valor Property da classe de extensão subjacente TemplateBindingExtension.
A sintaxe do elemento de objeto é possível, mas não é exibida pois não tem aplicativo realístico. TemplateBinding
é usado para preencher os valores dos setters usando expressões avaliadas. Usar a sintaxe do elemento de objeto TemplateBinding
para preencher a sintaxe do elemento de propriedade <Setter.Property>
é desnecessariamente detalhado.
TemplateBinding
também pode ser usado em um atributo detalhado que especifica a propriedade Property como sendo o par propriedade=valor:
<object property="{TemplateBinding Property=sourceProperty}" ... />
O uso detalhado geralmente é útil para as extensões que têm mais de uma propriedade configurável, ou caso algumas propriedades sejam opcionais. Como TemplateBinding
tem apenas uma propriedade configurável, que é necessária, esse uso detalhado não é típico.
Na implementação do processador XAML do WPF, o tratamento para essa extensão de marcação é definido pela TemplateBindingExtension classe.
TemplateBinding
é uma extensão da marcação. Extensões de marcação são tipicamente implementadas quando existe um requisito que permite que valores de atributo sejam diferentes de valores literais ou nomes de manipuladores, e o requisito é mais global do que simplesmente colocar conversores de tipo em certos tipos ou propriedades. Todas as extensões de marcação em XAML usam os caracteres {
e }
na sintaxe de atributo, que é a convenção pela qual o processador XAML reconhece que uma extensão de marcação precisa processar o atributo. Para obter mais informações, consulte Extensões de marcação e XAML do WPF.
Confira também
.NET Desktop feedback