Compartilhar via


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 definida na sintaxe de atribuição.
sourceProperty Outra propriedade de dependência que existe no tipo que está sendo modelado, especificada por sua 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 a sintaxe XAML do PropertyPath.

Observações

A 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}. A TemplateBinding é sempre uma associação unidirecional, mesmo que as propriedades por padrão utilizem 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 {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}de associação.

RelativeSource é outra extensão de marcação que às vezes é usada em conjunto com ou em vez de TemplateBinding para realizar a vinculação relativa de propriedades 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 de cadeia de caracteres 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 em setters, empregando expressões avaliadas, e utilizar a sintaxe do elemento objeto para TemplateBinding tornar a sintaxe do elemento de propriedade para <Setter.Property> desnecessariamente prolixa.

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, a qual é obrigatória, esse uso verboso 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 da 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 e XAML do WPF.

Consulte também