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
.
BindingGroupName: una cadena que identifica un posible grupo de enlaces. Se trata de un concepto de enlace relativamente avanzado; consulte la página de referencia de BindingGroupName.
BindsDirectlyToSource: Booleano, puede ser
true
o bienfalse
. El valor predeterminado esfalse
.Converter: se puede establecer como una cadena
bindProp
=value
en la expresión, pero para ello se requiere una referencia de objeto para el valor, como una Extensión de marcado StaticResource. El valor de este caso es una instancia de una clase de convertidor personalizada.ConverterCulture: configurable en la expresión como un identificador basado en estándares, vea el tema de referencia para ConverterCulture.
ConverterParameter: se puede establecer como una cadena
bindProp
=value
en la expresión, pero depende del tipo de parámetro que se pase. Si se pasa un tipo de referencia para el valor, este uso requiere una referencia de objeto como una Extensión de marcado StaticResource anidada.ElementName: mutuamente excluyentes frente a RelativeSource y Source; cada una de estas propiedades de enlace representa una metodología de enlace determinada. Consulte Información general sobre el enlace de datos.
FallbackValue: se puede establecer como una cadena
bindProp
=value
en la expresión, pero depende del tipo del valor que se pasa. Si se pasa un tipo de referencia, se requiere una referencia de objeto como una Extensión de marcado StaticResource anidada.IsAsync: Booleano, puede ser
true
o bienfalse
. El valor predeterminado esfalse
.Mode: value es un nombre constante de la BindingMode enumeración. Por ejemplo:
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: Booleano, puede ser
true
o bienfalse
. El valor predeterminado esfalse
.NotifyOnTargetUpdated: Booleano, puede ser
true
o bienfalse
. El valor predeterminado esfalse
.NotifyOnValidationError: Booleano, puede ser
true
o bienfalse
. El valor predeterminado esfalse
.Path: una cadena que describe una ruta de acceso hacia un objeto de datos o un modelo de objeto general. El formato proporciona varias convenciones diferentes para recorrer un modelo de objeto que no se puede describir adecuadamente en este tema. Vea Sintaxis XAML de PropertyPath.
RelativeSource: mutuamente excluyentes frente a ElementName y Source; cada una de estas propiedades de enlace representa una metodología de enlace determinada. Consulte Información general sobre el enlace de datos. Requiere un uso anidado de Extensión de marcado RelativeSource para especificar el valor.
Source: mutuamente excluyentes frente a RelativeSource y ElementName; en cada una de estas propiedades de enlace representa una metodología de enlace determinada. Consulte Información general sobre el enlace de datos. Requiere un uso de extensión anidada, normalmente una Extensión de marcado StaticResource que hace referencia a un origen de datos de objeto de un diccionario de recursos con clave.
StringFormat: una cadena que describe una convención de formato de cadena para los datos enlazados. Se trata de un concepto de enlace relativamente avanzado; consulte la página de referencia de StringFormat.
TargetNullValue: se puede establecer como una cadena
bindProp
=value
en la expresión, pero depende del tipo de parámetro al que se pasa. Si se pasa un tipo de referencia para el valor, este uso requiere una referencia de objeto como una Extensión de marcado StaticResource anidada.UpdateSourceTrigger: value es un nombre constante de la UpdateSourceTrigger enumeración. Por ejemplo:
{Binding UpdateSourceTrigger=LostFocus}
. Los controles específicos pueden tener diferentes valores predeterminados para esta propiedad de enlace. Vea UpdateSourceTrigger.ValidatesOnDataErrors: Booleano, puede ser
true
o bienfalse
. El valor predeterminado esfalse
. Vea la sección Comentarios.ValidatesOnExceptions: Booleano, puede ser
true
o bienfalse
. El valor predeterminado esfalse
. Vea la sección Comentarios.XPath: una cadena que describe una ruta de acceso en XMLDOM de un origen de datos XML. Vea Enlazar a datos XML mediante XMLDataProvider y consultas XPath.
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.
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
.NET Desktop feedback