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.
El DataGrid control permite mostrar y editar datos de muchos orígenes diferentes, como desde una base de datos SQL, una consulta LINQ o cualquier otro origen de datos enlazable. Para obtener más información, consulte Información general sobre fuentes de enlace.
Vinculación de datos
Para enlazar el DataGrid a datos, establezca la propiedad ItemsSource en implementación de IEnumerable. Cada fila de la cuadrícula de datos está enlazada a un objeto del origen de datos y cada columna de la cuadrícula de datos está enlazada a una propiedad del objeto de datos.
Para que la DataGrid interfaz de usuario se actualice automáticamente cuando se agregan o quitan elementos de los datos de origen, DataGrid debe enlazarse a una colección que implemente la INotifyCollectionChanged interfaz, como .ObservableCollection<T> Para reflejar automáticamente los cambios de propiedad, los objetos de la colección de origen deben implementar la INotifyPropertyChanged interfaz . Para obtener más información, consulte Visión general del enlace de datos.
Las columnas pueden mostrar texto, controles, como , ComboBoxo cualquier otro contenido de WPF, como imágenes, botones o cualquier contenido contenido de una plantilla. Puede usar un DataGridTemplateColumn para mostrar los datos definidos en una plantilla. En la tabla siguiente se enumeran los tipos de columna que se proporcionan de forma predeterminada.
| Tipo de columna generado | Tipo de datos |
|---|---|
| DataGridTextColumn | String |
| DataGridCheckBoxColumn | Boolean |
| DataGridComboBoxColumn | Enum |
| DataGridHyperlinkColumn | Uri |
Generación automática de columnas
De forma predeterminada, el DataGrid control genera columnas automáticamente al establecer la ItemsSource propiedad . El tipo de columna que se genera depende del tipo de datos de la columna, como se muestra en la tabla anterior.
Cuando las columnas se generan automáticamente, puede controlar el AutoGeneratingColumn evento para personalizar o cancelar columnas antes de agregarlas a DataGrid. Si agrega columnas definidas por el usuario y columnas generadas automáticamente a DataGrid, primero se agregan las columnas definidas por el usuario. Para reorganizar el orden de presentación de las columnas, puede establecer la DisplayIndex propiedad para columnas individuales.
Puede evitar la generación automática de columnas estableciendo la propiedad AutoGenerateColumns en false. Esto resulta útil si desea crear y configurar todas las columnas explícitamente.
Columnas personalizadas
Use el DataGridTemplateColumn tipo para definir una columna personalizada si los tipos de columna integrados no satisfacen sus necesidades. El DataGridTemplateColumn tipo proporciona CellTemplate y CellEditingTemplate propiedades que te permiten especificar plantillas de contenido para los modos de visualización y edición. Por ejemplo, podría definir una columna personalizada para las fechas. CellTemplate podría definir un TextBlock para mostrar una fecha y podría CellEditingTemplate definir un DatePicker control para editar la fecha.
Puede usar la Columns colección para agregar, insertar, quitar y cambiar las columnas del control en tiempo de ejecución mediante programación. Compruebe la IsAutoGenerated propiedad para determinar si una columna se genera automáticamente o se define por el usuario. Las columnas generadas automáticamente se agregan, quitan o regeneran automáticamente cuando cambia ItemsSource .
DataGrid se puede personalizar en apariencia, como fuente de celda, color y tamaño. DataGrid admite todas las funciones de creación de plantillas y estilos de otros controles WPF. DataGrid también incluye comportamientos predeterminados y personalizables para editar, ordenar y validar.
Corrección
De forma predeterminada, puede editar elementos directamente en DataGrid. Para garantizar que las modificaciones se pueden confirmar y cancelar correctamente, los objetos en DataGrid deben implementar IEditableObject interfaz. Como alternativa, puede establecer la propiedad IsReadOnly en true para deshabilitar la edición en DataGrid.
DataGrid tiene compatibilidad integrada con los siguientes comandos de edición:
| Command | Clave predeterminada |
|---|---|
| BeginEditCommand | F2 |
| CancelEditCommand | ESC |
| CommitEditCommand | ENTRAR |
| DeleteCommand | DELETE |
Para colocar la celda actual en modo de edición, haga clic en ella o presione F2. Se confirma una edición de nivel de celda cuando se mueve a otra celda de la misma fila o presiona ENTRAR mientras la celda está en modo de edición. Todas las modificaciones de una fila se confirman cuando se mueve a otra fila o se presiona ENTRAR mientras la fila está en modo de edición. Para cancelar una edición de celda, presione ESC una vez y cancele todas las ediciones de una fila presionando ESC dos veces. Para obtener más información sobre cómo confirmar y cancelar modificaciones mediante programación, vea los BeginEditmétodos , CommitEdity CancelEdit .
Establezca las CanUserAddRows propiedades y CanUserDeleteRows para especificar si un usuario puede agregar o eliminar filas. Un usuario puede eliminar filas seleccionadas presionando la tecla DELETE. Si la propiedad CanUserAddRows se establece en true, se agrega una nueva fila de artículo como la última fila en el DataGrid. Puede establecer valores predeterminados para los nuevos elementos controlando el InitializingNewItem evento.
Nota:
La posibilidad de permitir acciones de edición se ve afectada por muchos factores, incluyendo el estado de IsReadOnly y IsEnabled del DataGrid, y si la recopilación de datos subyacente DataGrid permite la acción.
Selection
De forma predeterminada, se selecciona toda la fila cuando un usuario hace clic en una celda de DataGrid, y un usuario puede seleccionar varias filas. Puede establecer la SelectionUnit propiedad para especificar si un usuario puede seleccionar celdas, filas completas o ambas. Establezca la SelectionMode propiedad para especificar si se pueden seleccionar varias filas o celdas, o solo filas o celdas únicas.
Puede obtener información sobre las celdas seleccionadas en la SelectedCells propiedad. Puede obtener información sobre las celdas para las que la selección ha cambiado en el SelectedCellsChangedEventArgsSelectedCellsChanged evento. Llame a los métodos SelectAllCells o UnselectAllCells para programáticamente seleccionar o anular la selección de todas las celdas. Para obtener más información, vea Comportamiento predeterminado del teclado y el mouse en el control DataGrid.
Agrupación, ordenación y filtrado
De forma predeterminada, puede ordenar los elementos en un DataGrid haciendo clic en el encabezado de columna. Puede personalizar la ordenación controlando el Sorting evento. Para cancelar la ordenación predeterminada, establezca la propiedad Handled en true. También puede ordenar los datos de origen antes de mostrarse enDataGrid.
Para agrupar, ordenar y filtrar datos en DataGrid, vincula DataGrid a una implementación de ICollectionView que admita estas operaciones. A continuación, realice las operaciones en la vista de recopilación. Cuando los elementos se agrupan en DataGrid, puede definir un GroupStyle que especifique la apariencia de cada grupo. Para aplicar el GroupStyle, añádelo a la colección GroupStyle del DataGrid. Si tiene varios niveles de agrupación, puede aplicar estilos diferentes a cada nivel de grupo. Los estilos se aplican en el orden en que se definen. Para obtener más información, vea Cómo: Agrupar, ordenar y filtrar datos en el control DataGrid.
Validation
DataGrid permite realizar la validación en el nivel de celda y fila. Con la validación de nivel de celda, valida las propiedades individuales de un objeto de datos enlazado cuando un usuario actualiza un valor. Con la validación de nivel de fila, se validan objetos de datos completos cuando un usuario confirma cambios en una fila. Puede proporcionar comentarios visuales personalizados para los errores de validación de nivel de fila estableciendo la RowValidationErrorTemplate propiedad o puede usar el indicador de error predeterminado. Para crear una regla de validación personalizada, cree una clase que derive de la ValidationRule clase e implemente el Validate método . Agregue la regla de validación personalizada a la RowValidationRules colección.
Tareas comunes
En la tabla siguiente se enumeran algunas de las tareas comunes para DataGrid y cómo realizarlas. Al ver la API relacionada, puede encontrar más información y código de ejemplo.
| Escenario | Enfoque |
|---|---|
| Alternar colores de fondo | Establezca la AlternationCount propiedad en 2 o más y, a continuación, asigne un Brush a los RowBackground y AlternatingRowBackground. |
| Definición del comportamiento de selección de celdas y filas | Establezca las propiedades SelectionMode y SelectionUnit. |
| Personalización de la apariencia visual de encabezados, celdas y filas | Aplique una nueva Style a las propiedades ColumnHeaderStyle, RowHeaderStyle, CellStyle o RowStyle. |
| Configurar opciones de tamaño | Establezca las propiedades Height, MaxHeight, MinHeight, Width, MaxWidth, o MinWidth. Para obtener más información, consulte Opciones de ajuste de tamaño en el control DataGrid. |
| Obtener acceso a los elementos seleccionados | Compruebe la SelectedCells propiedad para obtener las celdas seleccionadas y la SelectedItems propiedad para obtener las filas seleccionadas. Para obtener más información, consulte SelectedCells. |
| Personalización de las interacciones del usuario final | Establezca las propiedades CanUserAddRows, CanUserDeleteRows, CanUserReorderColumns, CanUserResizeColumns, CanUserResizeRows y CanUserSortColumns. |
| Cancelación o cambio de columnas generadas automáticamente | Controle el evento AutoGeneratingColumn. |
| Inmovilizar una columna | Establezca la FrozenColumnCount propiedad en 1 y mueva la columna a la posición más izquierda estableciendo la DisplayIndex propiedad en 0. |
| Uso de datos XML como origen de datos | Enlace el objeto ItemsSource en DataGrid a la consulta XPath que representa la colección de elementos. Cree cada columna en DataGrid. Para vincular cada columna, configure el XPath en la vinculación a la consulta que obtiene la propiedad del origen del elemento. Para obtener un ejemplo, consulte DataGridTextColumn. |
Artículos relacionados
| Título | Descripción |
|---|---|
| Elementos de la Cuadrícula de Datos | Describe los tipos de elemento que componen DataGrid, incluidos DataGridCell, DataGridRow, DataGridRowHeader, DataGridColumnHeadery DataGridColumnHeadersPresenter. |
| Tutorial: Mostrar datos de una base de datos de SQL Server en un control DataGrid | Describe cómo configurar un nuevo proyecto de WPF, agregar un elemento Entity Framework, establecer el origen y mostrar los datos en .DataGrid |
| Cómo: Agregar detalles de fila a un control DataGrid | Describe cómo crear detalles de fila para un DataGrid. |
| Cómo: Implementar la validación con el control DataGrid | Describe cómo validar valores en DataGrid celdas y filas y mostrar comentarios de validación. |
| Comportamiento predeterminado del teclado y el mouse en el control DataGrid | Describe cómo interactuar con el DataGrid control mediante el teclado y el mouse. |
| Cómo: Agrupar, ordenar y filtrar datos en el control DataGrid | Describe cómo ver los datos de maneras DataGrid diferentes mediante la agrupación, la ordenación y el filtrado de los datos. |
| Opciones de ajuste de tamaño en el control DataGrid | Describe cómo controlar el ajuste de tamaño absoluto y automático en el DataGrid. |
Personalización de DataGrid
El DataGrid control admite opciones comunes de formato de tabla, como alternar fondos de fila y la capacidad de mostrar u ocultar encabezados, líneas de cuadrícula y barras de desplazamiento. Además, el control proporciona varias propiedades de estilo y plantilla que puede usar para cambiar completamente la apariencia del control y sus filas, columnas, encabezados y celdas.
Para personalizar DataGrid el comportamiento, puede controlar los eventos de cambio de selección, edición de celdas y reordenación de columnas. DataGrid También expone varios eventos para el reciclaje de filas que puede controlar para personalizar las filas.
Para aplicar la misma configuración de propiedad a varios DataGrid controles, use la Style propiedad . Puede modificar el valor predeterminado ControlTemplate para dar al control una apariencia única. Para obtener más información sobre cómo crear un ControlTemplate, vea Creación de una plantilla para un control .
Las propiedades de dependencia de este control pueden establecerse mediante el estilo predeterminado del control. Si una propiedad se establece con un estilo predeterminado, la propiedad puede cambiar de su valor predeterminado cuando el control aparece en la aplicación. El estilo predeterminado viene determinado por el tema de escritorio que se usa cuando se ejecuta la aplicación.
Nota:
Establecer una propiedad visual solo tiene un efecto si esa propiedad está presente en la plantilla predeterminada del control y se establece mediante templateBinding.
Estilos y plantillas
En esta sección se describen los estilos y plantillas del DataGrid control . Puede modificar el valor predeterminado ControlTemplate para dar al control una apariencia única. Para obtener más información, vea Aplicar estilos y plantillas ycrear una plantilla para un control.
Content (propiedad)
El DataGrid control usa la ItemsSource propiedad para definir el origen de datos. El origen de datos puede ser cualquier colección enlazable, como una base de datos, una consulta LINQ u otro origen de datos enlazable.
Partes
Este control no define ningún elemento de plantilla.
Estados visuales
En la tabla siguiente se enumeran los estados visuales del DataGrid control.
| Nombre de VisualState | Nombre de VisualStateGroup | Descripción |
|---|---|---|
| Normal | CommonStates | El control está en su estado normal. |
| Disabled | CommonStates | El control está deshabilitado. |
| Validar | Estados de Validación | El control es válido y no tiene errores de validación. |
| EnfoqueInválido | Estados de Validación | El control tiene un error de validación y tiene el foco del teclado. |
| InválidoSinEnfoque | Estados de Validación | El control tiene un error de validación, pero no tiene el foco del teclado. |
Tipos de elementos DataGrid
El DataGrid control se compone de varios tipos de elementos. Para obtener información sobre estos elementos y sus estilos y plantillas, vea Elementos DataGrid.
Consulte también
.NET Desktop feedback