Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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, <Binding
bindProp1="
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.
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 para BindingGroupName.
BindsDirectlyToSource: booleano, puede ser
true
ofalse
. El valor predeterminado esfalse
.Converter: se puede establecer como una
bindProp
=value
cadena 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 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 estándares; consulte el tema de referencia para ConverterCulture.
ConverterParameter: se puede establecer como una
bindProp
=value
cadena en la expresión, pero depende del tipo del parámetro 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.ElementName: mutuamente excluyente frente a RelativeSource y Source; cada una de estas propiedades de enlace representa una metodología de enlace determinada. Consulte Introducción al enlace de datos.
FallbackValue: se puede establecer como una
bindProp
=value
cadena 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
ofalse
. 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
ofalse
. El valor predeterminado esfalse
.NotifyOnTargetUpdated: booleano, puede ser
true
ofalse
. El valor predeterminado esfalse
.NotifyOnValidationError: booleano, puede ser
true
ofalse
. El valor predeterminado esfalse
.Path: una cadena que describe una ruta de acceso a un objeto de datos o a un modelo de objetos general. El formato proporciona varias convenciones diferentes para recorrer un modelo de objetos que no se puede describir adecuadamente en este tema. Consulta Sintaxis XAML de PropertyPath.
RelativeSource: mutuamente excluyente frente a con ElementName y Source; cada una de estas propiedades de enlace representa una metodología de enlace determinada. Consulte Introducción al enlace de datos. Requiere un uso anidado de RelativeSource MarkupExtension 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. Consulte Introducción al enlace de datos. Requiere el uso de una extensión anidada, normalmente una "StaticResource Markup Extension" que hace referencia a un origen de datos de objeto de un diccionario de recursos con claves.
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 para StringFormat.
TargetNullValue: se puede establecer como una
bindProp
=value
cadena en la expresión, pero depende del tipo del parámetro que se pasa. Si se pasa un tipo de referencia como valor, se 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 valores predeterminados diferentes para esta propiedad de enlace. Consulte UpdateSourceTrigger.ValidatesOnDataErrors: booleano, puede ser
true
ofalse
. El valor predeterminado esfalse
. Vea la sección Comentarios.ValidatesOnExceptions: booleano, puede ser
true
ofalse
. El valor predeterminado esfalse
. Vea la sección Comentarios.XPath: una cadena que describe una ruta de acceso al XMLDOM de un origen de datos XML. Consulte Enlazar a datos XML mediante consultas XMLDataProvider y XPath.
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.
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
.NET Desktop feedback