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.
BindingGroupName: una cadena que identifica un posible grupo de enlaces. Este es un concepto de enlace relativamente avanzado; vea la página de referencia de BindingGroupName.
BindsDirectlyToSource: booleana; puede ser true o false. El valor predeterminado es false.
Converter: puede establecerse como una cadena bindProp=value en la expresión, pero esto requiere una referencia a objeto para el valor, como Extensión de marcado StaticResource. El valor en este caso es una instancia de una clase de convertidor personalizada.
ConverterCulture: se puede establecer en la expresión como un identificador basado en normas; vea el tema de referencia correspondiente a ConverterCulture.
ConverterParameter: puede establecerse como una cadena bindProp=value en la expresión, pero depende del tipo del parámetro que se va a pasar. Si se pasa un tipo de referencia para el valor, este uso requiere una referencia a objeto, como una Extensión de marcado StaticResource anidada.
ElementName: mutuamente excluyente frente a RelativeSource y Source; cada una de estas propiedades de enlace representa una metodología de enlace determinada. Vea Información general sobre el enlace de datos.
FallbackValue: puede establecerse como una cadena bindProp=value en la expresión, pero depende del tipo del valor que se va a pasar. Si se pasa un tipo de referencia, se requiere una referencia a objeto, como una Extensión de marcado StaticResource anidada.
IsAsync: booleana; puede ser true o false. El valor predeterminado es false.
Mode: valor es un nombre constante de la enumeración BindingMode. Por ejemplo: {Binding Mode=OneWay}.
NotifyOnSourceUpdated: booleana; puede ser true o false. El valor predeterminado es false.
NotifyOnTargetUpdated: booleana; puede ser true o false. El valor predeterminado es false.
NotifyOnValidationError: booleana; puede ser true o false. El valor predeterminado es false.
Path: una cadena que describe una ruta de acceso en un objeto de datos o un modelo de objetos general. El formato proporciona varias convenciones diferentes para atravesar un modelo de objetos que no se puede describir suficientemente en este tema. Vea Sintaxis de PropertyPath de XAML.
RelativeSource: mutuamente excluyente frente a ElementName y Source; cada una de estas propiedades de enlace representan una metodología de enlace determinada. Vea Información general sobre el enlace de datos. Exige el uso de una Extensión de marcado RelativeSource anidada para especificar el valor.
Source: mutuamente excluyente frente a RelativeSource y ElementName; cada una de estas propiedades de enlace representa una metodología de enlace determinada. Vea Información general sobre el enlace de datos. Requiere el uso de una extensión anidada, normalmente la Extensión de marcado StaticResource que hace referencia a un origen de datos de objeto de un diccionario de recursos clave.
StringFormat: una cadena que describe una convención de formato de cadena para los datos enlazados. Este es un concepto de enlace relativamente avanzado; vea la página de referencia de StringFormat.
TargetNullValue: puede establecerse como una cadena bindProp=value en la expresión, pero depende del tipo del parámetro que se va a pasar. Si se pasa un tipo de referencia para el valor, se requiere una referencia a objeto, como una Extensión de marcado StaticResource anidada.
UpdateSourceTrigger: valor es un nombre constante de la enumeración UpdateSourceTrigger. Por ejemplo: {Binding UpdateSourceTrigger=LostFocus}. Los controles concretos tienen potencialmente valores predeterminados diferentes para esta propiedad de enlace. Vea UpdateSourceTrigger.
ValidatesOnDataErrors: booleana; puede ser true o false. El valor predeterminado es false. Vea la sección Comentarios.
ValidatesOnExceptions: booleana; puede ser true o false. El valor predeterminado es false. Vea la sección Comentarios.
XPath: una cadena que describe una ruta de acceso al XMLDOM de un origen de datos XML. Vea Cómo: Enlazar a datos XML mediante XMLDataProvider y consultas XPath.
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.
Comentarios
Importante |
---|
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.
Nota |
---|
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
Conceptos
Información general sobre el enlace de datos