Partilhar 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 modelado.

Uso de atributos XAML

<object property="{TemplateBinding sourceProperty}" ... />

Uso de atributos 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á a ser definida na sintaxe setter.
sourceProperty Outra propriedade de dependência que existe no tipo que está sendo modelado, especificada por seu DependencyProperty.Name.

- ou -

Um nome de propriedade "pontilhado" que é definido por um tipo diferente do tipo de destino que está sendo modelado. Isto é, na verdade, um PropertyPath. Consulte sintaxe XAML PropertyPath.

Comentários

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}. Uma TemplateBinding é sempre uma ligação unidirecional, mesmo que as propriedades envolvidas tenham como padrão a ligação bidirecional. Ambas as propriedades envolvidas devem ser propriedades de dependência. Para obter a ligação bidirecional a um pai modelado, use a seguinte instrução de vinculação em vez {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 vinculação de propriedade relativa dentro de 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 de cadeia de caracteres fornecido após o identificador TemplateBinding é atribuído como o valor Property da classe de extensão subjacente TemplateBindingExtension.

A sintaxe do elemento objeto é possível, mas não é mostrada porque não tem aplicação realista. TemplateBinding é usado para preencher valores dentro de setters, usando expressões avaliadas e usando sintaxe de elemento de objeto para TemplateBinding para preencher <Setter.Property> sintaxe de elemento de propriedade é desnecessariamente detalhada.

TemplateBinding também pode ser usado em um uso de atributo verboso que especifica a propriedade Property como um par property=value:

<object property="{TemplateBinding Property=sourceProperty}" ... />

O uso detalhado geralmente é útil para extensões que têm mais de uma propriedade configurável ou se algumas dessas propriedades são opcionais. Como TemplateBinding tem apenas uma propriedade configurável, e é necessário, esse uso prolixo não é típico.

Na implementação do processador WPF XAML, a manipulação para essa extensão de marcação é definida pela classe TemplateBindingExtension.

TemplateBinding é uma extensão de marcação. As extensões de marcação geralmente são implementadas quando há um requisito para escapar de valores de atributos diferentes de valores literais ou nomes de manipuladores, e o requisito é mais global do que apenas colocar conversores de tipo em determinados tipos ou propriedades. Todas as extensões de marcação em 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 Markup Extensions e WPF XAML.

Ver também