Extensão de marcação TemplateBindingTemplateBinding Markup Extension

Vincula o valor de uma propriedade em um modelo de controle para ser o valor de outra propriedade no controle personalizado.Links the value of a property in a control template to be the value of another property on the templated control.

Uso do Atributo XAMLXAML Attribute Usage

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

Uso do Atributo XAML (para propriedade Setter em um modelo ou estilo)XAML Attribute Usage (for Setter property in template or style)

<Setter Property="propertyName" Value="{TemplateBinding sourceProperty}" .../>  

Valores XAMLXAML Values

propertyName DependencyProperty.Name da propriedade sendo definida na sintaxe setter.DependencyProperty.Name of the property being set in the setter syntax.
sourceProperty Outra propriedade de dependência que existe no tipo que está sendo personalizado, especificada por DependencyProperty.Name.Another dependency property that exists on the type being templated, specified by its DependencyProperty.Name.

- ou -- or -

Um nome de propriedade "pontilhado" definido por um tipo diferente do tipo de destino sendo personalizado.A "dotted-down" property name that is defined by a different type than the target type being templated. Isso é, na verdade, um PropertyPath.This is actually a PropertyPath. Consulte Sintaxe XAML de PropertyPath.See PropertyPath XAML Syntax.

ComentáriosRemarks

Uma TemplateBinding é uma forma otimizada de uma Associação para cenários de modelo, análoga a um Binding construído com {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}.A TemplateBinding is an optimized form of a Binding for template scenarios, analogous to a Binding constructed with {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}. Um TemplateBinding é sempre uma associação unidirecional, mesmo se as propriedades envolverem associação bidirecional padrão.A TemplateBinding is always a one-way binding, even if properties involved default to two-way binding. Ambas as propriedades envolvidas devem ser propriedades de dependência.Both properties involved must be dependency properties. Para obter uma ligação bidirecional com um pai com modelo, use a seguinte instrução de associação em vez {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.In order to achieve two-way binding to a templated parent use the following binding statement instead {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 Associação de propriedade relativa em um modelo.RelativeSource is another markup extension that is sometimes used in conjunction with or instead of TemplateBinding in order to perform relative property binding within a template.

A descrição dos modelos de controle como um conceito não é abordada aqui; para obter mais informações, consulte Control Styles and templates.Describing control templates as a concept is not covered here; for more information, see Control Styles and Templates.

A sintaxe de atributo é a sintaxe mais comum usada com essa extensão de marcação.Attribute syntax is the most common syntax used with this markup extension. O token da cadeia de caracteres fornecido após a cadeia de caracteres identificadora TemplateBinding é atribuído como o valor Property da classe de extensão subjacente TemplateBindingExtension.The string token provided after the TemplateBinding identifier string is assigned as the Property value of the underlying TemplateBindingExtension extension class.

A sintaxe do elemento de objeto é possível, mas não é exibida pois não tem aplicativo realístico.Object element syntax is possible, but it is not shown because it has no realistic application. TemplateBinding é usado para preencher os valores dos setters usando expressões avaliadas. Usar a sintaxe do elemento de objeto TemplateBinding para preencher a sintaxe do elemento de propriedade <Setter.Property> é desnecessariamente detalhado.TemplateBinding is used to fill values within setters, using evaluated expressions, and using object element syntax for TemplateBinding to fill <Setter.Property> property element syntax is unnecessarily verbose.

TemplateBinding também pode ser usado em um atributo detalhado que especifica a propriedade Property como sendo o par propriedade=valor:TemplateBinding can also be used in a verbose attribute usage that specifies the Property property as a property=value pair:

<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.The verbose usage is often useful for extensions that have more than one settable property, or if some properties are optional. Como TemplateBinding tem apenas uma propriedade configurável, que é necessária, esse uso detalhado não é típico.Because TemplateBinding has only one settable property, which is required, this verbose usage is not typical.

Na implementação do processador XAML WPFWPF, o tratamento para essa extensão de marcação é definido pela classe TemplateBindingExtension.In the WPFWPF XAML processor implementation, the handling for this markup extension is defined by the TemplateBindingExtension class.

TemplateBinding é uma extensão da marcação.TemplateBinding is a markup extension. Extensões de marcação são tipicamente implementadas quando existe um requisito que permite que valores de atributo sejam 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.Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than just putting type converters on certain types or properties. Todas as extensões de marcação em XAML usam os caracteres { e } na sintaxe de atributo, que é a convenção pela qual o processador XAML reconhece que uma extensão de marcação precisa processar o atributo.All markup extensions in XAML use the { and } characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must process the attribute. Para obter mais informações, consulte Extensões de marcação e XAML do WPF.For more information, see Markup Extensions and WPF XAML.

Consulte tambémSee also