Enlazar extensión de marcadoBinding Markup Extension

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 su enlace en tiempo de ejecución.Defers a property value to be a data-bound value, creating an intermediate expression object and interpreting the data context that applies to the element and its binding at run time.

Uso de expresiones de enlaceBinding Expression Usage

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

Notas sobre la sintaxisSyntax Notes

En estas sintaxis, las [] y * no son literales.In these syntaxes, the [] and * are not literals. Forman parte de una notación para indicar que se pueden usar cero o más pares de valores=bindProp , con un separador , entre ellos y los pares de valores de=bindProp anteriores.They are part of a notation to indicate that zero or more bindProp=value pairs can be used, with a , separator between them and preceding bindProp=value pairs.

Cualquiera de las propiedades enumeradas en la sección "las propiedades de enlace que se pueden establecer con la extensión de enlace" podría establecerse en su lugar utilizando los atributos de un elemento de objeto Binding.Any of the properties listed in the "Binding Properties That Can Be Set with the Binding Extension" section could instead be set using attributes of a Binding object element. Sin embargo, eso no es realmente el uso de la extensión de marcado de Binding, sino simplemente el procesamiento XAML general de los atributos que establecen las propiedades de la clase Binding de CLR.However, that is not truly the markup extension usage of Binding, it is just the general XAML processing of attributes that set properties of the CLR Binding class. En otras palabras, <Binding bindProp1="value1"[ bindPropN="valuen"]*/> es una sintaxis equivalente para los atributos de Binding uso de elementos de objeto en lugar de un uso de la expresión Binding.In other words, <Binding bindProp1="value1"[ bindPropN="valueN"]*/> is an equivalent syntax for attributes of Binding object element usage instead of a Binding expression usage. Para obtener información sobre el uso de atributos XAML de propiedades específicas de Binding, vea la sección sobre el uso de atributos XAML de la propiedad pertinente de Binding en la biblioteca de clases .NET Framework.To learn about the XAML attribute usage of specific properties of Binding, see the "XAML Attribute Usage" section of the relevant property of Binding in the .NET Framework Class Library.

Valores XAMLXAML Values

bindProp1, bindPropN Nombre del Binding o BindingBase propiedad que se va a establecer.The name of the Binding or BindingBase property to set. No todas las propiedades de Binding se pueden establecer con la extensión Binding, y algunas propiedades se pueden configurar en una expresión Binding solo mediante extensiones de marcado anidadas adicionales.Not all Binding properties can be set with the Binding extension, and some properties are settable within a Binding expression only by using further nested markup extensions. Vea la sección "propiedades de enlace que se pueden establecer con la extensión de enlace".See "Binding Properties That Can Be Set with the Binding Extension" section.
value1, valueN Valor en el que se va a establecer la propiedad.The value to set the property to. El control del valor del atributo es, en última instancia, específico del tipo y la lógica de la propiedad de Binding específica que se establece.The handling of the attribute value is ultimately specific to the type and logic of the specific Binding property being set.
path Cadena de ruta de acceso que establece la propiedad Binding.Path implícita.The path string that sets the implicit Binding.Path property. Vea también sintaxis XAML de PropertyPath.See also PropertyPath XAML Syntax.

{Binding} sin calificarUnqualified {Binding}

El uso de {Binding} que se muestra en "uso de la expresión de enlace" crea un objeto Binding con valores predeterminados, que incluye una Binding.Path inicial de null.The {Binding} usage shown in "Binding Expression Usage" creates a Binding object with default values, which includes an initial Binding.Path of null. Esto sigue siendo útil en muchos escenarios, ya que el Binding creado podría basarse en 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.This is still useful in many scenarios, because the created Binding might be relying on key data binding properties such as Binding.Path and Binding.Source being set in the run-time data context. Para obtener más información sobre el concepto de contexto de datos, consulte enlace de datos.For more information on the concept of data context, see Data Binding.

Ruta de acceso implícitaImplicit Path

La extensión de marcado de Binding usa Binding.Path como una "propiedad predeterminada" conceptual, en la que no es necesario que Path= aparezca en la expresión.The Binding markup extension uses Binding.Path as a conceptual "default property", where Path= does not need to appear in the expression. Si especifica una expresión de Binding con una ruta de acceso implícita, la ruta de acceso implícita debe aparecer en primer lugar en la expresión, antes de cualquier otro bindProp=value pares en los que la propiedad Binding se especifica por su nombre.If you specify a Binding expression with an implicit path, the implicit path must appear first in the expression, prior to any other bindProp=value pairs where the Binding property is specified by name. 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.For example: {Binding PathString}, where PathString is a string that is evaluated to be the value of Binding.Path in the Binding created by the markup extension usage. 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}.You can append an implicit path with other named properties after the comma separator, for example, {Binding LastName, Mode=TwoWay}.

Propiedades de enlace que se pueden establecer con la extensión de enlaceBinding Properties That Can Be Set with the Binding Extension

La sintaxis que se muestra en este tema utiliza el bindPropgenérico =value aproximación, ya que hay muchas propiedades de lectura y escritura de BindingBase o Binding que se pueden establecer a través de Binding sintaxis de expresión o extensión de marcado.The syntax shown in this topic uses the generic bindProp=value approximation, because there are many read/write properties of BindingBase or Binding that can be set through the Binding markup extension / expression syntax. Se pueden establecer en cualquier orden, a excepción de una Binding.Pathimplícita.They can be set in any order, with the exception of an implicit Binding.Path. (Tiene la opción de especificar explícitamente Path=, en cuyo caso se puede establecer en cualquier orden).(You do have the option to explicitly specify Path=, in which case it can be set in any order). Básicamente, puede establecer cero o más propiedades en la lista siguiente, mediante bindProp=value pares separados por comas.Basically, you can set zero or more of the properties in the list below, using bindProp=value pairs separated by commas.

Algunos de estos valores de propiedad requieren tipos de objeto que no admiten una conversión de tipo nativo de una sintaxis de texto en XAML y, por tanto, requieren extensiones de marcado para establecerse como un valor de atributo.Several of these property values require object types that do not support a native type conversion from a text syntax in XAML, and thus require markup extensions in order to be set as an attribute value. Compruebe la sección uso de atributos XAML de la biblioteca de clases de .NET Framework para cada propiedad para obtener más información; la cadena que se usa para la sintaxis de atributo XAML con o sin más uso de la extensión de marcado es básicamente la misma que el valor que se especifica en una expresión de Binding, con la excepción de que no se colocan comillas alrededor de cada bindProp=value en expresión de Binding.Check the XAML Attribute Usage section in the .NET Framework Class Library for each property for more information; the string you use for XAML attribute syntax with or without further markup extension usage is basically the same as the value you specify in a Binding expression, with the exception that you do not place quotation marks around each bindProp=value in the Binding expression.

A continuación se enumeran las propiedades de Binding que no se pueden establecer mediante el formulario de expresión Binding extensión de marcado/{Binding}.The following are properties of Binding that cannot be set using the Binding markup extension/{Binding} expression form.

  • UpdateSourceExceptionFilter: esta propiedad espera una referencia a una implementación de devolución de llamada.UpdateSourceExceptionFilter: this property expects a reference to a callback implementation. No se puede hacer referencia a las devoluciones de llamada o métodos distintos de los controladores de eventos en la sintaxis XAML.Callbacks/methods other than event handlers cannot be referenced in XAML syntax.

  • ValidationRules: la propiedad toma una colección genérica de objetos ValidationRule.ValidationRules: the property takes a generic collection of ValidationRule objects. Esto podría expresarse como un elemento de propiedad en un elemento de objeto de Binding, pero no tiene una técnica de análisis de atributos de fácil disponibilidad para su uso en una expresión de Binding.This could be expressed as a property element in a Binding object element, but has no readily available attribute-parsing technique for usage in a Binding expression. Consulte el tema de referencia para obtener ValidationRules.See reference topic for ValidationRules.

  • XmlNamespaceManager

ComentariosRemarks

Importante

En cuanto a la prioridad de las propiedades de dependencia, una expresión de Binding es equivalente a un valor establecido localmente.In terms of dependency property precedence, a Binding expression is equivalent to a locally set value. Si establece un valor local para una propiedad que anteriormente tenía una expresión Binding, el Binding se quita por completo.If you set a local value for a property that previously had a Binding expression, the Binding is completely removed. Para obtener más información, consulte Prioridad de los valores de propiedades de dependencia.For details, see Dependency Property Value Precedence.

En este tema no se describe el enlace de datos en un nivel básico.Describing data binding at a basic level is not covered in this topic. Vea información general sobre el enlace de datos.See Data Binding Overview.

Nota

MultiBinding y PriorityBinding no admiten una sintaxis de extensión de XAMLXAML.MultiBinding and PriorityBinding do not support a XAMLXAML extension syntax. En su lugar, usaría elementos de propiedad.You would instead use property elements. Vea los temas de referencia para obtener MultiBinding y PriorityBinding.See reference topics for MultiBinding and PriorityBinding.

Los valores booleanos para XAML no distinguen mayúsculas de minúsculas.Boolean values for XAML are case insensitive. Por ejemplo, puede especificar {Binding NotifyOnValidationError=true} o {Binding NotifyOnValidationError=True}.For example you could specify either {Binding NotifyOnValidationError=true} or {Binding NotifyOnValidationError=True}.

Los enlaces que implican la validación de datos normalmente se especifican mediante un elemento Binding explícito en lugar de como una expresión {Binding ...}, y el establecimiento de ValidatesOnDataErrors o ValidatesOnExceptions en una expresión no es habitual.Bindings that involve data validation are typically specified by an explicit Binding element rather than as a {Binding ...} expression, and setting ValidatesOnDataErrors or ValidatesOnExceptions in an expression is uncommon. Esto se debe a que la propiedad complementaria ValidationRules no se puede establecer fácilmente en el formulario de expresión.This is because the companion property ValidationRules cannot be readily set in the expression form. Para obtener más información, vea implementar la validación de enlaces.For more information, see Implement Binding Validation.

Binding es una extensión de marcado.Binding is a markup extension. Normalmente, las extensiones de marcado se implementan cuando hay un requisito para que los valores de atributo no sean valores literales o nombres de controlador, y el requisito es más global que los convertidores de tipos con atributos en determinados tipos o propiedades.Markup extensions are typically implemented when there is a requirement to escape attribute values to be other than literal values or handler names, and the requirement is more global than type converters attributed on certain types or properties. Todas las extensiones de marcado de 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.All markup extensions in XAML use the { and } characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must process the string contents. Para más información, vea Extensiones de marcado y XAML de WPF.For more information, see Markup Extensions and WPF XAML.

Binding es una extensión de marcado atípica en 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.Binding is an atypical markup extension in that the Binding class that implements the extension functionality for WPF's XAML implementation also implements several other methods and properties that are not related to XAML. Los demás miembros están diseñados para que Binding una clase más versátil y independiente que puede abordar muchos escenarios de enlace de datos, además de funcionar como una extensión de marcado XAML.The other members are intended to make Binding a more versatile and self-contained class that can address many data binding scenarios in addition to functioning as a XAML markup extension.

Vea tambiénSee also