Extensão de linguagem de marcação TemplateBinding
Vincula o valor de uma propriedade em um modelo de controle para ser o valor de alguma outra propriedade exposta no controle que usa o modelo.
Uso de atributos XAML
<object property="{TemplateBinding targetProperty}" .../>
Uso de atributos XAML (para propriedades setter em um modelo ou estilo)
<Setter Property="propertyName" Value="{TemplateBinding targetProperty}" .../>
Valores de XAML
propertyName |
DependencyProperty.Name da propriedade sendo definida na sintaxe setter. |
targetProperty |
Uma propriedade de dependência que existe no tipo que está sendo templated, especificada pelo seu DependencyProperty.Name. - ou - Um nome de propriedade "pontilhado" que é definido por um tipo diferente do tipo de destino sendo templated. Isso é na verdade um PropertyPath. Consulte Sintaxe de um PropertyPath XAML. |
Comentários
A TemplateBinding is an optimized form of a Binding for template scenarios, analogous to a Binding constructed with {Binding RelativeSource={RelativeSource TemplatedParent}}.
RelativeSource é outra extensão de marcação que às vezes é usada em conjunto com ou ao invés de TemplateBinding de modo a executar associação relativa de propriedades em um modelo.
A descrição de modelos de controle como um conceito não é abordada aqui; para obter mais informações consulte Exemplos de ControlTemplate.
Sintaxe de atributo é a sintaxe mais comum usada com esta extensão de marcação. O símbolo-string fornecido após a string identificadora do TemplateBinding é atribuído como o valor do Property da classe de extensão TemplateBindingExtension subjacente.
A sintaxe do elemento de objeto é indiscutivelmente possível, mas não é mostrado porque ela tem nenhum aplicativo realista. TemplateBinding é usado para preencher valores dentro de setters, usando expressões avaliados e usando sintaxe de elemento de objeto para TemplateBinding para preencher <Setter.Property> sintaxe de elemento da propriedade é desnecessariamente detalhada.
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=targetProperty}" .../>
O uso detalhado geralmente é útil para as extensões que têm mais de uma propriedade configurável, ou se algumas propriedades são opcionais. Como TemplateBinding tem apenas uma propriedade configurável, que é necessária, esse uso detalhado não é típico.
Na implementação de processador XAML WPF, o tratamento para esta extensão de marcação é definida pela classe TemplateBindingExtension.
TemplateBinding é uma extensão de marcação. Extensões de marcação são tipicamente implementadas quando existe um requisito de escapar valores de atributo para serem 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 no XAML usam os caracteres { e } em sua sintaxe de atributo, que é a convenção pela qual o processador XAML reconhece que uma extensão de markup precisa processar o atributo. Para obter mais informações, consulte Extensão de Marcação e XAML.
Consulte também
Conceitos
Referência
MarkupExtension do RelativeSource