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.
En este artículo se introducen las características dinámicas de enlace de datos en el System.Xml.Linq espacio de nombres. Estas características se pueden usar como origen de datos para elementos de interfaz de usuario (UI) en aplicaciones de Windows Presentation Foundation (WPF). Este escenario se basa en propiedades dinámicas especiales de System.Xml.Linq.XAttribute y System.Xml.Linq.XElement.
XAML y LINQ a XML
El lenguaje de marcado extensible de aplicaciones (XAML) es un dialecto XML creado por Microsoft para admitir tecnologías de .NET. Se usa en WPF para representar elementos de interfaz de usuario y características relacionadas, como eventos y enlace de datos. En Windows Workflow Foundation, XAML se usa para representar la estructura del programa, como el control de programa (flujos de trabajo). XAML permite separar los aspectos declarativos de una tecnología del código de procedimiento relacionado que define el comportamiento más individualizado de un programa.
Hay dos formas generales de interactuar con XAML y LINQ to XML:
Dado que los archivos XAML tienen un formato XML correcto, se pueden consultar y manipular a través de tecnologías XML como LINQ to XML.
Dado que las consultas LINQ to XML representan un origen de datos, estas consultas se pueden usar como origen de datos para el enlace de datos para los elementos de la interfaz de usuario de WPF.
En esta documentación se describe el segundo escenario.
Enlace de datos en Windows Presentation Foundation
El enlace de datos de WPF permite que un elemento de interfaz de usuario asocie una de sus propiedades a un origen de datos. Un ejemplo sencillo de esto es un Label cuyo texto presenta el valor de una propiedad pública en un objeto definido por el usuario. El enlace de datos de WPF se basa en los siguientes componentes:
Componente | Descripción |
---|---|
Objetivo vinculante | Elemento de interfaz de usuario que se va a asociar al origen de datos. Los elementos visuales de WPF se derivan de la UIElement clase . |
Propiedad de destino | Propiedad de dependencia del destino de enlace que refleja el valor del origen de enlace de datos. Las propiedades de dependencia son compatibles directamente con la DependencyObject clase , que UIElement se deriva de . |
Fuente de vinculación | Objeto de origen para uno o varios valores que se proporcionan al elemento de interfaz de usuario para la presentación. WPF admite automáticamente los siguientes tipos como orígenes de enlace: objetos CLR, objetos de datos ADO.NET, datos XML (de consultas XPath o LINQ a XML) u otro DependencyObject. |
Ruta de origen | Propiedad del origen de enlace que se resuelve en un valor o un conjunto de valores que se van a enlazar. |
Una propiedad de dependencia es un concepto específico de WPF que representa una propiedad calculada dinámicamente de un elemento de interfaz de usuario. Por ejemplo, las propiedades de dependencia suelen tener valores predeterminados o valores proporcionados por un elemento primario. Estas propiedades especiales están respaldadas por instancias de la DependencyProperty clase (y no campos como con propiedades estándar). Para obtener más información, consulte Información general sobre las propiedades de dependencia.
Enlace de datos dinámicos en WPF
De forma predeterminada, el enlace de datos solo se produce cuando se inicializa el elemento de la interfaz de usuario de destino. Esto se denomina vinculación única. Para la mayoría de los propósitos, esto no es suficiente; Normalmente, una solución de enlace de datos requiere que los cambios se propaguen dinámicamente en tiempo de ejecución mediante una de las siguientes opciones:
El enlace unidireccional hace que los cambios en un lado se propaguen automáticamente. Normalmente, los cambios realizados en el origen se reflejan en el destino, pero la inversa puede ser útil a veces.
En el enlace bidireccional , los cambios en el origen se propagan automáticamente al destino y los cambios en el destino se propagan automáticamente al origen.
Para que se produzca un enlace unidireccional o bidireccional, el origen debe implementar un mecanismo de notificación de cambios, por ejemplo, mediante la implementación de la INotifyPropertyChanged interfaz o mediante un patrón PropertyNameChanged para cada propiedad admitida.
Para obtener más información sobre el enlace de datos en WPF, vea Enlace de datos (WPF).
Propiedades dinámicas en clases LINQ to XML
La mayoría de las clases LINQ to XML no califican como orígenes de datos dinámicos de WPF adecuados. Parte de la información más útil solo está disponible a través de métodos, no propiedades y propiedades en estas clases no implementan notificaciones de cambios. Para admitir el enlace de datos de WPF, LINQ to XML expone un conjunto de propiedades dinámicas.
Estas propiedades dinámicas son propiedades en tiempo de ejecución especiales que duplican la funcionalidad de los métodos y propiedades existentes en las XAttribute clases y XElement . Se agregaron a estas clases únicamente para permitirles actuar como orígenes de datos dinámicos para WPF. Para satisfacer esta necesidad, todas estas propiedades dinámicas implementan notificaciones de cambio. En la sección siguiente, LINQ to XML Dynamic Properties se proporciona una referencia detallada para estas propiedades dinámicas.
Nota:
Muchas de las propiedades públicas estándar, que se encuentran en las distintas clases del espacio de nombres System.Xml.Linq, se pueden usar para el enlace de datos de única vez. Sin embargo, recuerde que ni el origen ni el destino se actualizarán dinámicamente en este esquema.
Acceso a propiedades dinámicas
No se puede tener acceso a las propiedades dinámicas de las XAttribute clases y XElement como las propiedades estándar. Por ejemplo, en lenguajes compatibles con CLR como C#, no pueden ser:
Se accede directamente en tiempo de compilación. Las propiedades dinámicas son invisibles para el compilador y para Visual Studio IntelliSense.
Se ha detectado o accedido en tiempo de ejecución mediante reflexión en .NET. Incluso en tiempo de ejecución, no son propiedades en el sentido básico del CLR.
En C#, solo se puede acceder a las propiedades dinámicas en tiempo de ejecución a través de las instalaciones proporcionadas por el System.ComponentModel espacio de nombres.
Por el contrario, en las propiedades dinámicas de origen XML se puede acceder a ellas mediante una notación sencilla de la siguiente forma:
<object>.<dynamic-property>
Las propiedades dinámicas de estas dos clases se resuelven en un valor que se puede usar directamente o en un indexador que se debe proporcionar con un índice para obtener el valor resultante o la colección de valores. Esta última sintaxis tiene la siguiente forma:
<object>.<dynamic-property>[<index-value>]
Para obtener más información, vea LINQ to XML Dynamic Properties(Propiedades dinámicas de LINQ to XML).
Para implementar el enlace dinámico de WPF, las propiedades dinámicas se usarán con las facilidades proporcionadas por el System.Windows.Data espacio de nombres, especialmente la clase Binding.
Consulte también
.NET Desktop feedback