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
.NET Desktop feedback