Opciones de ajuste de tamaño en el control DataGrid

Hay varias opciones disponibles para controlar los tamaños de DataGrid. Se puede establecer DataGrid, así como las filas y las columnas de DataGrid, para dimensionar automáticamente el contenido, o se puede establecer en valores concretos. De manera predeterminada, DataGrid aumentará y disminuirá de tamaño para ajustarse al tamaño del contenido.

Dimensionar DataGrid

Precauciones cuando se utiliza el tamaño automático

De forma predeterminada, las propiedades Width y Height de DataGrid se establecen en Double.NaN ("Auto" en XAML) y DataGrid se ajustará al tamaño de su contenido.

Cuando se coloca dentro de un contenedor que no restringe el tamaño de sus elementos secundarios, como Canvas o StackPanel, DataGrid se expandirá más allá de los límites visibles del contenedor y las barras de desplazamiento no se mostrarán. Esta condición tiene implicaciones de utilidad y rendimiento.

Cuando se enlaza un conjunto de datos, si Height de DataGrid no se restringe, continuará agregando una fila para cada elemento de datos en el conjunto de datos enlazado. Esto puede hacer que DataGrid crezca fuera de los límites visibles de la aplicación cuando se agreguen filas. DataGrid no mostrará las barras de desplazamiento en este caso porque Height continuará creciendo para alojar las nuevas filas.

Se crea un objeto para cada fila de DataGrid. Si está trabajando con un conjunto de datos grande y permite que DataGrid se dimensione automáticamente, la creación de un número grande de objetos puede afectar al rendimiento de la aplicación.

Para evitar estos problemas al trabajar con conjuntos de datos grandes, se recomienda que establezca Height de DataGrid específicamente o que lo coloque en un contenedor que restrinja su Height, por ejemplo, Grid. Cuando Height se restringe, DataGrid creará solo las filas que se ajusten a su Height especificado y reciclará según sea necesario esas filas para mostrar los nuevos datos.

Establecer el tamaño de DataGrid

DataGrid se puede establecer para que se dimensione dentro de los límites especificados automáticamente o DataGrid se puede establecer en un tamaño concreto. En la siguiente lista se muestran las propiedades que pueden establecerse para controlar el tamaño de DataGrid.

Propiedad

Descripción

Height

Establece un alto concreto para DataGrid.

MaxHeight

Establece el límite superior del alto de DataGrid. DataGrid crecerá verticalmente hasta alcanzar este alto.

MinHeight

Establece el límite inferior del alto de DataGrid. DataGrid se reducirá verticalmente hasta alcanzar este alto.

Width

Establece un ancho concreto para DataGrid.

MaxWidth

Establece el límite superior del ancho de DataGrid. DataGrid crecerá horizontalmente hasta alcanzar este ancho.

MinWidth

Establece el límite inferior del ancho de DataGrid. DataGrid se reducirá horizontalmente hasta alcanzar este ancho.

Dimensionar filas y encabezados de fila

Filas de DataGrid

De forma predeterminada, una propiedad Height de fila DataGrid se establece en Double.NaN ("Auto" en XAML) y el alto de fila se expandirá hasta el tamaño de su contenido. El alto de todas las filas de DataGrid se puede especificar estableciendo la propiedad DataGrid.RowHeight. Los usuarios pueden cambiar el alto de fila arrastrando los divisores del encabezado de fila.

Encabezados de fila de DataGrid

Para mostrar los encabezados de fila, la propiedad HeadersVisibility debe estar establecida en DataGridHeadersVisibility.Row o en DataGridHeadersVisibility.All. De forma predeterminada, se muestran los encabezados de fila y se dimensionan para ajustar su contenido automáticamente. A los encabezados de fila se les puede proporcionar un ancho específico estableciendo la propiedad DataGrid.RowHeaderWidth.

Dimensionar columnas y encabezados de columna

Columnas DataGrid

El control DataGrid utiliza valores de las estructuras DataGridLength y DataGridLengthUnitType para especificar modos de ajuste de tamaño automático o absoluto.

En la tabla siguiente se muestran los valores proporcionados por la estructura DataGridLengthUnitType.

Name

Descripción

Auto

El modo de ajuste de tamaño automático predeterminado ajusta el tamaño de las columnas de DataGrid en función del contenido de los encabezados de celda y columna.

SizeToCells

El modo de ajuste de tamaño automático basado en celdas ajusta el tamaño de las columnas de DataGrid en función del contenido de las celdas en la columna, sin incluir los encabezados de columna.

SizeToHeader

El modo de ajuste de tamaño automático basado en encabezados ajusta el tamaño de las columnas de DataGrid en función solamente del contenido de los encabezados de columna.

Pixel

El modo de ajuste de tamaño basado en píxeles dimensiona las columnas de DataGrid basándose en el valor numérico proporcionado.

Star

El modo de ajuste de tamaño mediante asterisco se usa para distribuir el espacio disponible en proporciones ponderadas.

En XAML, los valores de asterisco se expresan como n*, donde n representa un valor numérico. 1* equivale a *. Por ejemplo, si el ancho de dos columnas de un control DataGrid fuese * y 2*, respectivamente, la primera columna recibiría una parte del espacio disponible y la segunda columna recibiría dos partes del espacio disponible.

La clase DataGridLengthConverter se puede utilizar para convertir datos entre valores numéricos o de cadena y valores DataGridLength.

De manera predeterminada, la propiedad DataGrid.ColumnWidth se establece en SizeToHeader y la propiedad DataGridColumn.Width se establece en Auto. Cuando el modo de tamaño se establece en Auto o SizeToCells, las columnas crecerán hasta el tamaño de su contenido visible más ancho. Al desplazarse, estos modos de tamaño harán que las columnas se expandan si el contenido que es mayor que el tamaño de columna se desplaza en la vista. La columna no se reducirá cuando el contenido se desplace fuera de la vista.

Las columnas de DataGrid también se pueden establecer para dimensionarse automáticamente solo dentro de los límites especificados, o las columnas se pueden establecer en un tamaño concreto. En la siguiente lista se muestran las propiedades que se pueden establecer para controlar el tamaño de columna.

Propiedad

Descripción

DataGrid.MaxColumnWidth

Establece el límite superior de todas las columnas de DataGrid.

DataGridColumn.MaxWidth

Establece el límite superior de una columna individual. Invalida DataGrid.MaxColumnWidth.

DataGrid.MinColumnWidth

Establece el límite inferior de todas las columnas de DataGrid.

DataGridColumn.MinWidth

Establece el límite inferior de una columna individual. Invalida DataGrid.MinColumnWidth.

DataGrid.ColumnWidth

Establece un ancho específico para todas las columnas de DataGrid.

DataGridColumn.Width

Establece un ancho específico para una columna individual. Invalida DataGrid.ColumnWidth.

Encabezados de columna de DataGrid

De forma predeterminada, se muestran los encabezados de columna de DataGrid. Para ocultar los encabezados de fila, la propiedad HeadersVisibility debe estar establecida en DataGridHeadersVisibility.Row o en DataGridHeadersVisibility.None. De forma predeterminada, cuando se muestran los encabezados de columna, se dimensionan para ajustar su contenido automáticamente. A los encabezados de columna se les puede proporcionar un alto concreto estableciendo la propiedad DataGrid.ColumnHeaderHeight.

Cambiar el tamaño con el mouse

Los usuarios pueden cambiar el tamaño de las filas y columnas de DataGrid arrastrando los divisores de encabezado de columna o fila. DataGrid también admite el cambio de tamaño automático de filas y columnas haciendo doble clic en el divisor de encabezado de columna o fila. Para evitar que un usuario cambie el tamaño de las columnas en particular, establezca la propiedad DataGridColumn.CanUserResize en false para las columnas individuales. Para evitar que los usuarios cambien el tamaño de todas las columnas, establezca la propiedad DataGrid.CanUserResizeColumns en false. Para evitar que los usuarios cambien el tamaño de todas las filas, establezca la propiedad DataGrid.CanUserResizeRows en false.

Vea también

Referencia

DataGrid

DataGridColumn

DataGridLength

DataGridLengthConverter

Historial de cambios

Fecha

Historial

Motivo

Octubre de 2010

Se ha agregado un tema.

Mejora de la información.