Extensión de marcado TemplateBinding

Vincula el valor de una propiedad de una plantilla de control para que sea el valor de otra propiedad del control con plantilla.

Uso de atributos XAML

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

Uso de atributos XAML (para la propiedad Setter de una plantilla o estilo)

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

Valores XAML

Value Descripción
propertyName Propiedad DependencyProperty.Name que se va establecer en la sintaxis del establecedor.
sourceProperty Otra propiedad de dependencia existente en el tipo con plantilla, especificada por el valor de DependencyProperty.Name.

O bien

Nombre de propiedad "relacionada" que se define por un tipo diferente del tipo de destino que se va a convertir en un tipo con plantilla. En realidad, se trata de un objeto PropertyPath. Vea Sintaxis XAML de PropertyPath.

Comentarios

TemplateBinding es una forma optimizada de Binding para escenarios de plantilla, similar a un objeto Binding creado con {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}. TemplateBinding siempre es un enlace unidireccional, aunque las propiedades implicadas establezcan por defecto un enlace bidireccional. Ambas propiedades implicadas deben ser propiedades de dependencia. Para lograr un enlace bidireccional a un elemento primario con plantilla, en su lugar use la siguiente instrucción de enlace {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.

RelativeSource es otra extensión de marcado que se utiliza a veces en combinación con TemplateBinding o en su lugar para realizar enlaces de propiedades relativos dentro de una plantilla.

Aquí no se describe el concepto de plantillas de control; para más información vea Plantillas y estilos de control.

La sintaxis de atributo es la que se usa normalmente con esta extensión de marcado. El token de cadena que se proporciona después de la cadena de identificador TemplateBinding se asigna como valor de Property de la clase de extensión TemplateBindingExtension subyacente.

La sintaxis de elementos de objeto es posible, pero no se muestra porque no tiene ninguna aplicación en el mundo real. TemplateBinding se emplea para rellenar los valores dentro de los establecedores, mediante expresiones evaluadas, y el uso de la sintaxis de elementos de objeto para que TemplateBinding rellene la sintaxis de elementos de propiedad de <Setter.Property> aplica un grado de detalle innecesario.

TemplateBinding también se puede utilizar en el uso de atributos detallado que especifica la propiedad Property como un par de propiedad=valor:

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

El uso detallado suele ser útil para las extensiones que tienen más de una propiedad que se puede configurar, o en aquellos casos en que algunas propiedades son opcionales. Dado que TemplateBinding tiene una sola propiedad configurable, que es obligatoria, este uso detallado no es habitual.

La clase TemplateBindingExtension define el control para esta extensión de marcado en la implementación del procesador XAML de WPF.

TemplateBinding es una extensión de marcado. Las extensiones de marcado se suelen implementar cuando se necesita que los valores de los atributos de escape no sean valores literales o nombres de controladores, y este requisito es de índole más global que limitarse a colocar los convertidores de tipos en determinados tipos o propiedades. Todas las extensiones de marcado de XAML utilizan los caracteres { y } en su sintaxis de atributo, que es la convención que permite que un procesador de XAML reconozca que el atributo se debe procesar mediante una extensión de marcado. Para más información, vea Extensiones de marcado y XAML de WPF.

Consulte también