Enlazar extensión de marcado

Aplaza un valor de propiedad para que sea un valor enlazado a datos, y crea un objeto de expresión intermedio e interpreta el contexto de datos que se aplica al elemento y a su enlace en tiempo de ejecución.

Uso de expresiones de enlace

<object property="{Binding}" .../>
-or-
<object property="{Binding bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>

Notas de sintaxis

En estas sintaxis, [] y * no son literales. Son parte de una notación para indicar que se pueden usar cero o más pares propEnl=valor, con un separador , entre ellos y los pares propEnl=valor precedentes.

Cualquiera de las propiedades mostradas en la sección "Propiedades de enlace que se pueden establecer con la extensión de enlace" puede establecerse en su lugar mediante los atributos de un elemento de objeto Binding. Sin embargo, este no es el verdadero uso de la extensión de marcado de Binding, simplemente es el procesamiento XAML general de los atributos que establecen las propiedades de la clase Binding de CLR. Es decir, <Binding bindProp1="value1"[ bindPropN="valueN"]*/> es una sintaxis casi equivalente para los atributos de uso del elemento de objeto Binding en lugar de un uso de la expresión Binding. Para obtener información sobre el uso de atributos XAML de propiedades concretas de Binding, vea la sección "Uso de atributos XAML" de la propiedad pertinente de Binding en la Biblioteca de clases de .NET Framework.

Valores XAML

bindProp1, bindPropN

Nombre de la propiedad Binding o BindingBase que se va a establecer. No todas las propiedades Binding se pueden establecer con la extensión Binding y algunas de ellas únicamente se pueden establecer dentro de una expresión Binding mediante extensiones de marcado anidadas adicionales. Consulte la sección "Propiedades de enlace que se pueden establecer con la extensión de enlace".

value1, valueN

Valor en que se establecerá la propiedad. El control del valor de atributo es, en definitiva, específico del tipo y la lógica de la propiedad Binding concreta que se establece.

path

Cadena de ruta de acceso que establece la propiedad Binding.Path implícita. Vea también Sintaxis de PropertyPath de XAML.

{Binding} incompleto

El uso de {Binding} mostrado en "Uso de la expresión Binding" crea un objeto Binding con valores predeterminados que incluye una propiedad Binding.Path inicial de null. Esto sigue resultando útil en muchos escenarios, porque los objetos Binding creados podrían confiar en que las propiedades de enlace de datos clave como Binding.Path y Binding.Source están establecidas en el contexto de datos en tiempo de ejecución. Para obtener más información sobre el concepto de contexto de datos, vea Enlace de datos (WPF).

Ruta de acceso implícita

La extensión de marcado Binding usa Binding.Path como una "propiedad predeterminada" conceptual, donde Path= no tiene por qué aparecer en la expresión. Si especifica una expresión Binding con una ruta de acceso implícita, esta debe aparecer primero en la expresión, antes de cualquier otro par bindProp=value, la propiedad Binding se especifica por nombre. Por ejemplo: {Binding PathString}, donde PathString es una cadena que se evalúa como el valor de Binding.Path del objeto Binding creada por el uso de la extensión de marcado. Puede anexar una ruta de acceso implícita con otras propiedades con nombre después del separador de coma, por ejemplo, {Binding LastName, Mode=TwoWay}.

Propiedades de enlace que se pueden establecer con la extensión de enlace

En la sintaxis mostrada en este tema se utiliza la aproximación genérica bindProp=value, porque hay muchas propiedades de lectura y escritura de BindingBase o Binding que se pueden establecer mediante la extensión de marcado o la sintaxis de la expresión Binding. Pueden establecerse en cualquier orden, a excepción de una propiedad Binding.Path implícita. (Tiene la opción de especificar Path= explícitamente, en cuyo caso también puede establecerse en cualquier orden). Básicamente, puede establecer cero o más de las propiedades de la lista siguiente, mediante pares bindProp=value separados por comas.

Varios de estos valores de propiedad requieren tipos de objetos que no admiten una conversión de tipo nativo de una sintaxis de texto en XAML y, en consecuencia, requieren extensiones de marcado para poder establecerse como un valor de atributo. Para obtener más información, vea la sección Uso de atributos XAML en la Biblioteca de clases de .NET Framework para cada propiedad; la cadena que se usa para la sintaxis del atributo XAML con o sin uso adicional de la extensión de marcado es básicamente igual que el valor que se especifica en una expresión Binding, con la excepción de que no se colocan las comillas alrededor de bindProp=value en la expresión Binding.

Las siguientes son propiedades de Binding que no se pueden establecer mediante la extensión de marcado Binding/forma de expresión {Binding}.

  • UpdateSourceExceptionFilter: esta propiedad espera una referencia a una implementación de devolución de llamada. No se puede hacer referencia a las devoluciones de llamada o métodos distintos de los controladores de eventos en sintaxis XAML.

  • ValidationRules: esta propiedad toma una colección genérica de objetos ValidationRule. Esto se puede expresar como un elemento de propiedad en un elemento de objeto Binding, pero no tiene ninguna técnica de análisis de atributos disponible para el uso en una expresión Binding. Vea el tema de referencia para ValidationRules.

  • XmlNamespaceManager

Comentarios

Nota importanteImportante

Por lo que se refiere a la prioridad de las propiedades de dependencia, una expresión Binding es equivalente a un valor establecido localmente.Si establece un valor local para una propiedad que previamente tenía una expresión Binding, Binding se quita totalmente.Para obtener información detallada, vea Prioridad de los valores de propiedades de dependencia.

La descripción del enlace de datos en un nivel básico no se incluye en este tema. Vea Información general sobre el enlace de datos.

NotaNota

MultiBinding y PriorityBinding no admiten la sintaxis de extensión de XAML. En su lugar, use los elementos de propiedad.Vea los temas de referencia para MultiBinding y PriorityBinding.

Los valores booleanos para XAML no distinguen entre mayúsculas y minúsculas. Por ejemplo, puede especificar {Binding NotifyOnValidationError=true} o {Binding NotifyOnValidationError=True}.

Los enlaces que implican la validación de datos se especifican normalmente por un elemento Binding explícito en lugar de como una expresión {Binding ...} y no es frecuente establecer ValidatesOnDataErrors o ValidatesOnExceptions en una expresión. Esto es debido a que la propiedad complementaria ValidationRules no se puede establecer directamente en el formulario de expresión. Para obtener más información, vea Cómo: Implementar la validación de enlaces.

Binding 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 los convertidores de tipos con atributos en determinados tipos o propiedades. Todas las extensiones de marcado de código XAML usan caracteres { y } en su sintaxis de atributo, que es la convención que permite que un procesador XAML reconozca que el contenido de la cadena se debe procesar mediante una extensión de marcado. Para obtener más información, vea Extensiones de marcado y XAML de WPF.

Binding es una extensión de marcado atípica porque la clase Binding que implementa la funcionalidad de la extensión para la implementación XAML de WPF también implementa otros muchos métodos y propiedades que no están relacionados con XAML. Los otros miembros están dirigidos a aumentar la versatilidad y autonomía de la clase Binding para que sea pueda resolver numerosos escenarios de enlace de datos además de actuar como extensión de marcado XAML.

Vea también

Referencia

Binding

Conceptos

Información general sobre el enlace de datos

Información general sobre XAML (WPF)

Extensiones de marcado y XAML de WPF