Compartir a través de


Extensión de marcado TemplateBinding

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

Uso de atributos XAML

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

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

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

Valores XAML

Importancia Descripción
propertyName DependencyProperty.Name de la propiedad establecida en la sintaxis del 'setter'.
sourceProperty Otra propiedad de dependencia que existe en el tipo que se está utilizando como plantilla, especificada por su DependencyProperty.Name.

- o -

Nombre de propiedad "dotted-down" definido por un tipo diferente al tipo de destino que se está creando con plantilla. Esto es de hecho un PropertyPath. Consulta Sintaxis XAML de PropertyPath.

Observaciones

Un TemplateBinding es una forma optimizada de un Binding para escenarios de modelos, análogo a un Binding construido con {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}. Un TemplateBinding es siempre un enlace unidireccional, incluso si las propiedades implicadas están implicadas de forma predeterminada en el enlace bidireccional. Ambas propiedades implicadas deben ser propiedades de dependencia. Para lograr el enlace bidireccional a un elemento primario con plantilla, use la siguiente instrucción de enlace en su lugar {Binding RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay, Path=MyDependencyProperty}.

RelativeSource es otra extensión de marcado que a veces se usa junto con TemplateBinding o en lugar de TemplateBinding para realizar el enlace de propiedades relativo dentro de una plantilla.

La descripción de plantillas de control como concepto no se trata aquí; para obtener más información, vea Estilos y plantillas de control.

La sintaxis de atributo es la sintaxis más común que se usa con esta extensión de marcado. El token de cadena proporcionado después de asignar la cadena de identificador de TemplateBinding como valor Property de la clase de extensión TemplateBindingExtension subyacente.

La sintaxis del elemento object es posible, pero no se muestra porque carece de aplicación práctica. TemplateBinding se usa para rellenar valores dentro de establecedores, mediante expresiones evaluadas y mediante la sintaxis de elemento de objeto. Usar la sintaxis de elemento de propiedad para TemplateBinding de <Setter.Property> es innecesariamente verboso.

TemplateBinding también se puede usar en un uso detallado de atributos que especifica la Property propiedad como un par property=value:

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

El uso detallado suele ser útil para las extensiones que tienen más de una propiedad configurable, o algunas propiedades opcionales. Dado que TemplateBinding solo tiene una propiedad configurable, que es necesaria, no suele ser común un uso tan detallado.

En la implementación del procesador XAML de WPF, el manejo de esta extensión de marcado está definido por la clase TemplateBindingExtension.

TemplateBinding es una extensión de marcado. Las extensiones de marcado normalmente se implementan cuando hay un requisito de escape de valores de atributo que no sean valores literales o nombres de controlador, y el requisito es más global que simplemente colocar convertidores de tipos en determinados tipos o propiedades. Todas las extensiones de marcado en XAML usan los { caracteres y } en su sintaxis de atributo, que es la convención por la que un procesador XAML reconoce que una extensión de marcado debe procesar el atributo. Para obtener más información, consulta Extensiones de marcado y XAML de WPF.

Consulte también