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 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