Enlazar controles WPF a datos en Visual Studio
Para mostrar los datos a los usuarios de la aplicación, puede enlazarlos a controles de WPF. Para crear estos controles enlazados a datos, puede arrastrar elementos desde la ventana Orígenes de datos hasta WPF Designer en Visual Studio. 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 cómo crear controles enlazados a datos en Visual Studio, vea Enlazar controles a los datos en Visual Studio. Para obtener 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. |
|
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. |
|
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. |
|
Enlazar un control a una imagen de 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 de colocación 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.
XAML y código generados
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 |
---|---|---|
Conjunto de datos |
Sí |
Sí |
Entity Data Model |
Sí |
Sí |
Servicio |
Sí |
No |
Objeto |
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 de interfaz de usuario 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 GetEntityNameQuery, donde EntityName es el nombre de la entidad.
Crea un controlador de eventos Loaded para el elemento de interfaz de usuario que contiene el control. El controlador de eventos llama al método GetEntityNameQuery 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 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 obtener un ejemplo de cómo hacerlo, vea Tutorial: Enlazar controles de WPF a un servicio de datos de 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 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 tener un constructor sin parámetros predeterminado.No pueden ser clases anidadas que contengan un "punto" en su sintaxis.Para obtener más información, vea Clases XAML y personalizadas para WPF.
Visual Studio genera un código 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.
Vea también
Tareas
Cómo: Enlazar controles WPF a datos en Visual Studio
Cómo: Crear tablas de búsqueda en aplicaciones WPF
Cómo: Mostrar datos relacionados en aplicaciones WPF
Tutorial: Enlazar controles WPF a un conjunto de datos
Tutorial: Enlazar controles de WPF a un servicio de datos de WCF
Tutorial: Mostrar datos relacionados en una aplicación WPF
Referencia
Conceptos
Información general sobre orígenes de datos