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 intermedia 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 de sintaxisSyntax Notes

En estas sintaxis, el [] y * no son literales.In these syntaxes, the [] and * are not literals. Forman parte de una notación para indicar que se pueden utilizar , cero o más pares devalores bindProp,=con un separador entre ellos y los pares devalores 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 "Propiedades de enlace que se Binding pueden establecer con la extensión de enlace" en su lugar se podría establecer mediante atributos de un elemento de objeto.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, ese no es Bindingrealmente el uso de la extensión de marcado Binding de , es sólo el procesamiento XAML general de atributos que establecen propiedades de la clase 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 <Binding palabras, bindProp1="value1 "[ bindPropN="valueN "]*/> es una sintaxis equivalente para los atributos de uso de elementos de Binding objeto en lugar de un Binding uso de expresión.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 Bindingde atributos XAML de propiedades específicas Binding de , vea la sección "Uso de atributos XAML" de la propiedad relevante de la biblioteca de clases de .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 El nombre Binding de BindingBase la propiedad o que se ha establecido.The name of the Binding or BindingBase property to set. No Binding todas las propiedades Binding se pueden establecer con la Binding extensión y algunas propiedades se pueden establecer dentro de una expresión solo mediante el uso de más extensiones de marcado anidadas.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. Consulte 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 El valor en el que se establecerá la propiedad.The value to set the property to. El control del valor del atributo es en última Binding instancia específico para el tipo y la lógica de la propiedad 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 Binding.Path acceso que establece la propiedad implicit.The path string that sets the implicit Binding.Path property. Vea también Sintaxis XAML PropertyPath.See also PropertyPath XAML Syntax.

No calificados ?Unqualified {Binding}

El {Binding} uso que se muestra en Binding "Uso de expresiones Binding.Path de nullenlace" crea un objeto con valores predeterminados, que incluye una inicial de .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 Binding escenarios, porque el creado podría Binding.Path Binding.Source depender de propiedades de enlace de datos clave como y se establece 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, vea Enlace dedatos .For more information on the concept of data context, see Data Binding.

Ruta implícitaImplicit Path

La Binding extensión Binding.Path de marcado se utiliza como Path= una "propiedad predeterminada" conceptual, donde no es necesario aparecer 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 Binding una expresión con una ruta de acceso implícita, la ruta bindProp = value de Binding acceso implícita debe aparecer primero en la expresión, antes de cualquier otro par donde la propiedad se especifique por 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 {Binding PathString}ejemplo: PathString , donde se evalúa una cadena Binding.Path que Binding se evalúa como el valor de en el 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 {Binding LastName, Mode=TwoWay}propiedades con nombre después del separador de comas, por ejemplo, .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 bindProp = value muestra en este tema utiliza la aproximación Binding genérica, porque Binding hay muchas propiedades de lectura y escritura de BindingBase o que se pueden establecer a través de la 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, con Binding.Pathla excepción de un archivo .They can be set in any order, with the exception of an implicit Binding.Path. (Tiene la opción de especificar Path=explícitamente , 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 de las bindProp = value propiedades de la lista siguiente, utilizando 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.

Varios 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 lo 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 en 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 Binding sin más uso de extensión de bindProp = value marcado es básicamente la misma que el valor que especifique en una expresión, con la excepción de que no se colocan comillas alrededor de cada uno en la Binding expresión.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 Binding indican las propiedades Binding que{Binding} no se pueden establecer mediante el formulario de expresión/extensión de marcado.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/métodos que no sean controladores de eventos en la sintaxis XAML.Callbacks/methods other than event handlers cannot be referenced in XAML syntax.

  • ValidationRules: la propiedad toma ValidationRule una colección genérica de objetos.ValidationRules: the property takes a generic collection of ValidationRule objects. Esto podría expresarse como un Binding elemento de propiedad en un elemento de objeto, pero Binding no tiene técnica de análisis de atributos fácilmente disponible para su uso en una expresión.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 ValidationRulestema de referencia para .See reference topic for ValidationRules.

  • XmlNamespaceManager

ObservacionesRemarks

Importante

En términos de prioridad Binding de propiedad de dependencia, una expresión 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 Binding propiedad Binding que anteriormente tenía una expresión, 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.

La descripción del enlace de datos en un nivel básico no se trata en este tema.Describing data binding at a basic level is not covered in this topic. Consulte Información general sobre el enlacede datos .See Data Binding Overview.

Nota

MultiBindingy PriorityBinding no admiten una XAMLXAML sintaxis de extensión.MultiBinding and PriorityBinding do not support a XAMLXAML extension syntax. En su lugar, usaría elementos de propiedad.You would instead use property elements. Consulte los MultiBinding temas PriorityBindingde referencia para y .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 {Binding NotifyOnValidationError=true} {Binding NotifyOnValidationError=True}especificar uno o .For example you could specify either {Binding NotifyOnValidationError=true} or {Binding NotifyOnValidationError=True}.

Los enlaces que implican la validación Binding de datos normalmente se especifican mediante un elemento explícito en lugar de como una {Binding ...} expresión, y establecer ValidatesOnDataErrors o ValidatesOnExceptions en una expresión es poco frecuente.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 ValidationRules a que la propiedad complementaria 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 validaciónde enlace .For more information, see Implement Binding Validation.

Binding es una extensión de marcado.Binding is a markup extension. Las extensiones de marcado se implementan normalmente cuando hay un requisito para que los valores de atributo de escape sean distintos de los valores literales o los nombres de controlador, y el requisito es más global que los convertidores de tipos atribuidos a 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 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.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.

Bindinges una extensión de marcado Binding atípica en que la 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.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 Binding están diseñados para crear 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.

Consulte tambiénSee also