Compartir a través de


Enlazar extensión de marcado

Defina un valor de propiedad para que sea un valor enlazado a datos, que 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.

Enlazar utilización de expresiones

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

Nota de sintaxis

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

Cualquiera de las propiedades enumeradas en la sección "Propiedades de enlace que se pueden establecer con la extensión de enlace" podría establecerse mediante atributos de un elemento de objeto Binding. Sin embargo, eso no es realmente el uso de la extensión de marcado de Binding, es solo el procesamiento general de XAML de los atributos que establecen las propiedades de la clase CLR Binding. En otras palabras, <Binding bindProp1="value1"[ bindPropN="valueN"]*/> es una sintaxis equivalente para los atributos de uso del elemento del objeto Binding en lugar de uso de una expresión Binding. Para obtener información sobre la utilización de atributos XAML de propiedades específicas de Binding, vea la sección "Uso de atributos XAML" de la propiedad pertinente en Binding la biblioteca de clases .NET Framework.

Valores XAML

Value Descripción
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 propiedades solo se pueden establecer dentro de una expresión Binding mediante otras extensiones de marcado anidadas. Consulte la sección "Propiedades de enlace que se pueden establecer con la extensión de enlace".
value1, valueN El valor en el que se establecerá la propiedad. El control del valor del atributo es, en última instancia, específico para el tipo y la lógica de la propiedad específica Binding que se establece.
path Cadena de ruta de acceso que establece la propiedad implícita Binding.Path. Consulta también Sintaxis XAML de PropertyPath.

Unqualified {Binding}

La utilización {Binding} que se muestra en "Enlazar utilización de expresiones" crea un Binding objeto con valores predeterminados, que incluye una inicial Binding.Path de null. Esto sigue siendo útil en muchos escenarios, ya que la creación Binding podría depender de las propiedades de enlace de datos clave, como Binding.Path y Binding.Source que se establecen en el contexto de datos en tiempo de ejecución. Para obtener más información sobre el concepto de contexto de datos, consulte Enlace de datos.

Ruta de acceso implícita

La Binding extensión de marcado usa Binding.Path como una "propiedad predeterminada" conceptual, que Path= no necesita aparecer en la expresión. Si especifica una expresión Binding con una ruta de acceso implícita, ésta debe aparecer primero en la expresión, antes de cualquier otro par bindProp=value en el que la propiedad Binding se especifique por nombre. Por ejemplo: {Binding PathString}, donde PathString es una cadena que se evalúa para ser el valor de Binding.Path que se ha creado en Binding por el uso de la extensión de marcado. Se puede agregar una ruta de acceso implícita con otras propiedades con nombre después del separador de comas, por ejemplo, {Binding LastName, Mode=TwoWay}.

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

La sintaxis que se muestra en este tema usa la aproximación genérica bindProp=value, ya que hay muchas propiedades de lectura y escritura de BindingBase o Binding que pueden establecerse mediante la sintaxis de extensión de marcado o expresiónBinding. Pueden establecerse en cualquier orden, con la excepción de un implícito Binding.Path. (Tiene la opción de especificar explícitamente Path=, en cuyo caso se puede establecer 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 objeto que no admiten una conversión de tipo nativo desde una sintaxis de texto en XAML y, por lo tanto, requieren extensiones de marcado para que se establezcan como un valor de atributo. Compruebe la sección Uso de atributos XAML de la biblioteca de clases .NET Framework para obtener más información de cada propiedad. La cadena que se usa para la sintaxis de atributos XAML, con o sin el uso adicional de la extensión de marcado, es básicamente la misma que el valor que se especifica en una expresión Binding, con la excepción de que no se colocan comillas alrededor de cada una bindProp=value en la expresión Binding.

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

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

  • ValidationRules: la propiedad toma una colección genérica de objetos ValidationRule. Esto podría expresarse como un elemento de propiedad en un Binding elemento de objeto, pero no tiene ninguna técnica de análisis de atributos disponible para su utilización en una expresión Binding. Consulte el tema de referencia para ValidationRules.

  • XmlNamespaceManager

Comentarios

Importante

En términos de precedencia de propiedad de dependencia, una expresión Binding es equivalente a un valor establecido localmente. Si se establece un valor local para una propiedad que anteriormente tenía una expresión Binding, el Binding se quita completamente. Para obtener más información, consulte Prioridad de los valores de propiedades de dependencia.

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

Nota:

MultiBinding y PriorityBinding no admiten una sintaxis de extensión XAML. En su lugar, se usarán elementos de propiedad. Consulte los temas de referencia para MultiBinding y PriorityBinding.

Los valores booleanos para XAML no distinguen entre mayúsculas y minúsculas. Por ejemplo, podría especificar tanto {Binding NotifyOnValidationError=true} como {Binding NotifyOnValidationError=True}.

Los enlaces que implican la validación de datos normalmente se especifican mediante un elemento explícito Binding en lugar de como una {Binding ...} expresión, y el valor ValidatesOnDataErrors o ValidatesOnExceptions en una expresión es poco común. Esto se debe a que la propiedad complementaria ValidationRules no se puede establecer fácilmente en el formulario de expresión. Para más información, consulte Implementar la validación de enlaces.

Binding es una extensión de marcado. Las extensiones de marcado se suelen implementar cuando se requiere que los valores de los atributos escapen de los valores literales o de los nombres de controladores. Este requisito es más que los convertidores de tipo atribuidos en ciertos tipos o propiedades. Todas las extensiones de marcado de XAML usan los caracteres { y } en su sintaxis de atributo, que es la convención que permite que un procesador de XAML reconozca que una extensión de marcado debe procesar el contenido de la cadena. Para más información, vea Extensiones de marcado y XAML de WPF.

Binding es una extensión de marcado inusual, ya que la clase Binding que implementa la funcionalidad de extensión para la implementación XAML de WPF también implementa otros métodos y propiedades que no están relacionados con XAML. Los demás miembros están diseñados para hacer una clase Binding más versátil y autosuficiente que pueda abordar muchos escenarios de enlace de datos y que funcione además como una extensión de marcado XAML.

Vea también