Compartir a través de


Extensión de marcado de vinculación

Aplaza un valor de propiedad para que sea un valor enlazado a datos, creando un objeto de expresión intermedio e interpretando 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 formas sintácticas, [] y * no son literales. Forman parte de una notación para indicar que se pueden usar cero o más pares de bindProp=value, con un , separador entre ellos y los pares de bindProp=value anteriores.

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 Binding elemento de objeto. Sin embargo, eso no es realmente el uso de la extensión de marcado de Binding, es solo el procesamiento XAML general de atributos que establecen propiedades de la clase CLR Binding . En otras palabras, <BindingbindProp1="value1"[bindPropN="valueN"]*/> es una sintaxis equivalente para los atributos de uso de un elemento de Binding objeto en lugar de uso de una Binding expresión. Para obtener información sobre el uso de atributos XAML de propiedades específicas 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

Importancia Descripción
bindProp1, bindPropN El nombre de la propiedad Binding o BindingBase que se va a establecer. No todas las Binding propiedades se pueden establecer con la Binding extensión y algunas propiedades solo se pueden establecer dentro de una Binding expresión 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 el que se va a establecer la propiedad. El control del valor del atributo es, en última instancia, específico del tipo y la lógica de la propiedad específica Binding que se va a establecer.
path Cadena de ruta que establece la propiedad de forma implícita Binding.Path. Consulta también Sintaxis XAML propertyPath.

Sin calificar {Binding}

El {Binding} uso mostrado en "Uso de expresiones de enlace" crea un objeto Binding con valores predeterminados, que incluye una inicial Binding.Path de null. Esto sigue siendo útil en muchos escenarios, ya que el elemento creado Binding podría depender de propiedades clave de enlace de datos, como Binding.Path y Binding.Source establecidas dentro del 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, donde Path= no es necesario que aparezca en la expresión. Si especifica una expresión con una Binding ruta de acceso implícita, la ruta de acceso implícita debe aparecer primero en la expresión, antes de cualquier otro bindProp=value par en el que se especifique la Binding propiedad por nombre. Por ejemplo: {Binding PathString}, donde PathString es una cadena que se evalúa como el valor de Binding.Path en el Binding creado 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 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 se pueden establecer a través de la sintaxis de la Binding extensión de marcado o expresión. Se pueden establecer 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 bindProp=value pares separados por comas.

Varios de estos valores de propiedad requieren tipos de objeto que no admiten una conversión de tipos nativos de una sintaxis de texto en XAML y, por tanto, requieren extensiones de marcado para establecerse como un valor de atributo. Consulte la sección Uso de atributos XAML de la biblioteca de clases de .NET Framework para obtener más información; la cadena que utilizas para la sintaxis de atributo XAML con o sin uso adicional de la extensión de marcado es básicamente la misma que el valor que especificas en una Binding expresión, con la excepción de que no colocas comillas alrededor de cada bindProp=value en la Binding expresión.

A continuación se muestran las 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 callback. No se puede hacer referencia a callbacks o métodos distintos de los controladores de eventos en la sintaxis XAML.

  • ValidationRules: la propiedad toma una colección genérica de ValidationRule objetos . 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 uso en una Binding expresión. Consulte el tema de referencia para ValidationRules.

  • XmlNamespaceManager

Observaciones

Importante

En términos de precedencia de propiedad de dependencia, una Binding expresión es equivalente a un valor establecido localmente. Si establece un valor local para una propiedad que anteriormente tenía una Binding expresión, Binding se quitará por completo. Para más detalles, consulte Precedencia de valores de propiedad de dependencia.

La descripción del enlace de datos en un nivel básico no se trata en este tema. Consulte Introducción al enlace de datos.

Nota:

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

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

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

Binding es una extensión de marcado. Las extensiones de marcado normalmente se implementan cuando hay un requisito de modificar los valores de atributo para que no sean simplemente valores literales o nombres de controladores, y este requisito es más global que los convertidores de tipos asignados a ciertos 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 contenido de la cadena. Para obtener más información, consulta Extensiones de marcado y XAML de WPF.

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

Consulte también