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

Styling and Templating

XAML Overview

Extensão de Marcação e XAML

Referência

MarkupExtension do RelativeSource

Ligação de marcação de extensão

Style

ControlTemplate