Enlazar controles WPF a datos en aplicaciones .NET Framework
Nota:
Los conjuntos de datos y las clases relacionadas son tecnologías heredadas de .NET Framework de principios de la década de 2000 que permiten a las aplicaciones trabajar con datos en memoria mientras están desconectadas de la base de datos. Las tecnologías son especialmente útiles para las aplicaciones que permiten a los usuarios modificar los datos y conservar los cambios en la base de datos. Aunque los conjuntos de datos han demostrado ser una tecnología de gran éxito, se recomienda que las nuevas aplicaciones de .NET usen Entity Framework Core. Entity Framework proporciona una manera más natural de trabajar con datos tabulares como modelos de objetos y tiene una interfaz de programación más sencilla.
Para mostrar los datos a los usuarios de la aplicación, puede enlazarlos a controles de WPF. Puede arrastrar los elementos de la ventana Orígenes de datos al Diseñador de WPF en Visual Studio para crear estos controles enlazados a datos. En este tema se describen algunas de las tareas, herramientas y clases más comunes que se pueden usar para crear aplicaciones de WPF enlazadas a datos.
Para obtener información general sobre el modo de crear controles enlazados a datos en Visual Studio, vea Enlazar controles a los datos en Visual Studio. Para más información sobre el enlace de datos de WPF, vea Información general sobre el enlace de datos.
Tareas necesarias para enlazar controles WPF a datos
En la tabla siguiente se enumeran las tareas que se pueden realizar al arrastrar elementos desde la ventana Orígenes de datos hasta WPF Designer.
Tarea | Más información |
---|---|
Crear nuevos controles enlazados a datos. Enlazar controles existentes a datos. |
Enlazar controles de WPF a un conjunto de datos |
Crear controles que muestren los datos relacionados de una relación primaria-secundaria: cuando el usuario selecciona un registro de datos primario en un control, otro control muestra los datos secundarios relacionados correspondientes al registro seleccionado. | Mostrar datos relacionados en aplicaciones WPF |
Crear una tabla de búsqueda que muestre información de una tabla según el valor de un campo de clave externa de otra tabla. | Creación de tablas de búsqueda en aplicaciones WPF |
Enlazar un control a una imagen de una base de datos. | Enlazar controles a imágenes desde una base de datos |
Destinos de colocación válidos
Los elementos de la ventana Orígenes de datos solo se pueden arrastrar hasta destinos de colocación válidos de WPF Designer. Principalmente, existen dos tipos de destinos para colocar válidos: contenedores y controles. Un contenedor es un elemento de la interfaz de usuario que normalmente contiene controles. Por ejemplo, una cuadrícula es un contenedor, como también lo es una ventana.
Código y XAML generado
Al arrastrar un elemento desde la ventana Orígenes de datos hasta WPF Designer, Visual Studio genera XAML que define un nuevo control enlazado a datos (o enlaza un control existente al origen de datos). En el caso de algunos orígenes de datos, Visual Studio también genera código en el archivo de código subyacente que llena de datos el origen de datos.
En la tabla siguiente se muestra el XAML y el código que Visual Studio genera para cada tipo de origen de datos en la ventana Orígenes de datos.
Origen de datos | Genera XAML que enlaza un control al origen de datos | Genera código que llena de datos el origen de datos |
---|---|---|
Dataset | Sí | Sí |
Entity Data Model | Sí | Sí |
Servicio | Sí | No |
Object | Sí | No |
Conjuntos de datos
Cuando se arrastra una tabla o columna desde la ventana Orígenes de datos hasta el diseñador, Visual Studio genera XAML que realiza lo siguiente:
Agrega el conjunto de datos y un nuevo objeto CollectionViewSource a los recursos del contenedor al que se arrastró el elemento. CollectionViewSource es un objeto que se puede usar para navegar y mostrar los datos del conjunto de datos.
Crea un enlace de datos para un control. Si se arrastra el elemento hasta un control existente en el diseñador, el XAML enlaza el control al elemento. Si se arrastra el elemento hasta un contenedor, el XAML crea el control que se seleccionó para el elemento arrastrado y enlaza el control al elemento. El control se crea dentro de una nueva clase Grid.
Visual Studio también realiza los cambios siguientes en el archivo de código subyacente:
- Crea un controlador de eventos Loaded para el elemento UI que contiene el control. El controlador de eventos llena de datos la tabla, recupera CollectionViewSource de los recursos del contenedor y, a continuación, convierte el primer elemento de datos en el elemento actual. Si ya existe un controlador de eventos Loaded, Visual Studio agrega este código al controlador de eventos existente.
Entity Data Models
Al arrastrar una entidad o una propiedad de entidad desde la ventana Orígenes de datos hasta el diseñador, Visual Studio genera XAML que realiza lo siguiente:
Agrega un nuevo objeto CollectionViewSource a los recursos del contenedor al que se arrastró el elemento. CollectionViewSource es un objeto que se puede usar para navegar y mostrar los datos de la entidad.
Crea un enlace de datos para un control. Si se arrastra el elemento hasta un control existente en el diseñador, el XAML enlaza el control al elemento. Si se arrastra el elemento hasta un contenedor, el XAML crea el control que se seleccionó para el elemento arrastrado y enlaza el control al elemento. El control se crea dentro de una nueva clase Grid.
Visual Studio también realiza los cambios siguientes en el archivo de código subyacente:
Agrega un nuevo método que devuelve una consulta para la entidad que se arrastró hasta el diseñador (o la entidad que contiene la propiedad que se arrastró hasta el diseñador). El nuevo método tiene el nombre
Get<EntityName>Query
, donde\<EntityName>
es el nombre de la entidad.Crea un controlador de eventos Loaded para el elemento UI que contiene el control. El controlador de eventos llama al método
Get<EntityName>Query
para llenar de datos la entidad, recupera CollectionViewSource de los recursos del contenedor y, a continuación, convierte el primer elemento de datos en el elemento actual. Si ya existe un controlador de eventos Loaded, Visual Studio agrega este código al controlador de eventos existente.
Servicios
Cuando se arrastra un objeto o una propiedad de servicio desde la ventana Orígenes de datos hasta el diseñador, Visual Studio genera código XAML que crea un control enlazado a datos (o enlaza un control existente al objeto o la propiedad). Sin embargo, Visual Studio no genera código que llene de datos el objeto de servicio del proxy. Este código se debe escribir expresamente. Para ver un ejemplo que muestra cómo hacerlo, vea Enlazar controles WPF a un servicio de datos WCF.
Visual Studio genera XAML que realiza lo siguiente:
Agrega un nuevo objeto CollectionViewSource a los recursos del contenedor al que se arrastró el elemento. CollectionViewSource es un objeto que se puede usar para navegar y mostrar los datos en el objeto devuelto por el servicio.
Crea un enlace de datos para un control. Si se arrastra el elemento hasta un control existente en el diseñador, el XAML enlaza el control al elemento. Si se arrastra el elemento hasta un contenedor, el XAML crea el control que se seleccionó para el elemento arrastrado y enlaza el control al elemento. El control se crea dentro de una nueva clase Grid.
Objetos
Cuando se arrastra un objeto o una propiedad desde la ventana Orígenes de datos hasta el diseñador, Visual Studio genera código XAML que crea un control enlazado a datos (o enlaza un control existente al objeto o la propiedad). Sin embargo, Visual Studio no genera el código que llena de datos el objeto. Este código se debe escribir expresamente.
Nota
Las clases personalizadas deben ser públicas y, de forma predeterminada, tienen un constructor sin parámetros. No pueden ser clases anidadas que contengan un "punto" en su sintaxis. Para obtener más información, consulte XAML y clases personalizadas para WPF.
Visual Studio genera XAML que realiza lo siguiente:
Agrega un nuevo objeto CollectionViewSource a los recursos del contenedor al que se arrastró el elemento. CollectionViewSource es un objeto que se puede usar para navegar y mostrar los datos del objeto.
Crea un enlace de datos para un control. Si se arrastra el elemento hasta un control existente en el diseñador, el XAML enlaza el control al elemento. Si se arrastra el elemento hasta un contenedor, el XAML crea el control que se seleccionó para el elemento arrastrado y enlaza el control al elemento. El control se crea dentro de una nueva clase Grid.