Opciones de ajuste de tamaño en el control DataGrid
Hay varias opciones disponibles para controlar el modo en que se dimensiona el control DataGrid. DataGrid, así como las filas y columnas individuales de DataGrid, se pueden establecer para que su tamaño se ajuste automáticamente a su contenido o se pueden establecer en valores específicos. De manera predeterminada, DataGrid se ampliará y se reducirá para ajustarse al tamaño de su contenido.
Dimensionamiento del control DataGrid
Precaución al usar el ajuste de tamaño automático
De manera predeterminada, las propiedades Height y Width 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 ajustará más allá de los límites visibles del contenedor y no se mostrarán barras de desplazamiento. Esta condición tiene implicaciones tanto de facilidad de uso como de rendimiento.
Cuando se enlaza a un conjunto de datos, si Height de DataGrid no está restringido, seguirá agregando una fila para cada elemento de datos del conjunto de datos enlazado. Esto puede hacer que DataGrid crezca fuera de los límites visibles de la aplicación a medida que se agregan filas. DataGrid no mostrará barras de desplazamiento en este caso porque Height seguirá creciendo para dar cabida a las nuevas filas.
Se crea un objeto para cada fila de DataGrid. Si está trabajando con un conjunto de datos de gran tamaño y permite que DataGrid ajuste su tamaño automáticamente, la creación de un gran número de objetos puede afectar al rendimiento de la aplicación.
Para evitar estos problemas al trabajar con conjuntos de datos de gran tamaño, se recomienda establecer específicamente Height de DataGrid o colocarlo en un contenedor que restrinja su Height, como Grid. Cuando Height está restringido, DataGrid solo crea las filas que caben en su Height especificado y recicla esas filas según sea necesario para mostrar nuevos datos.
Establecimiento del tamaño de DataGrid
DataGrid se puede establecer para que su tamaño se ajuste automáticamente dentro de los límites especificados o DataGrid se puede establecer en un tamaño específico. En la tabla siguiente se muestran las propiedades que se pueden establecer para controlar el tamaño de DataGrid.
Propiedad | Descripción |
---|---|
Height | Establece una altura específica para DataGrid. |
MaxHeight | Establece el límite superior de la altura de DataGrid. DataGrid crecerá verticalmente hasta que alcance esta altura. |
MinHeight | Establece el límite inferior de la altura de DataGrid. DataGrid se reducirá verticalmente hasta que alcance esta altura. |
Width | Establece un ancho específico para DataGrid. |
MaxWidth | Establece el límite superior del ancho de DataGrid. DataGrid crecerá horizontalmente hasta que alcance este ancho. |
MinWidth | Establece el límite inferior del ancho de DataGrid. DataGrid se reducirá horizontalmente hasta que alcance este ancho. |
Dimensionamiento de las filas y los encabezados de fila
Filas de DataGrid
De manera predeterminada, la propiedad Height de una fila DataGrid se establece en Double.NaN ("Auto
" en XAML), y el alto de fila se expandirá al 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 de encabezado de fila.
Encabezados de fila de DataGrid
Para mostrar los encabezados de fila, la propiedad HeadersVisibility debe establecerse en DataGridHeadersVisibility.Row o DataGridHeadersVisibility.All. De manera predeterminada, los encabezados de fila se muestran y su tamaño se ajusta automáticamente al tamaño de su contenido. Los encabezados de fila pueden tener un ancho específico estableciendo la propiedad DataGrid.RowHeaderWidth.
Dimensionamiento de las columnas y los encabezados de columna
Columnas de DataGrid
DataGrid usa los valores de DataGridLength y la estructura DataGridLengthUnitType para especificar modos de ajuste de tamaño absolutos o automáticos.
En la tabla siguiente se muestran los valores que proporciona la estructura DataGridLengthUnitType.
Nombre | Descripción |
---|---|
Auto | El modo de ajuste de tamaño automático predeterminado dimensiona las columnas DataGrid en función del contenido de las celdas y de los encabezados de columna. |
SizeToCells | El modo de ajuste de tamaño automático basado en celdas dimensiona las columnas DataGrid en función del contenido de las celdas de la columna, sin incluir los encabezados de columna. |
SizeToHeader | El modo de ajuste de tamaño automático basado en encabezados dimensiona las columnas DataGrid en función solo del contenido de los encabezados de columna. |
Pixel | El modo de ajuste de tamaño basado en píxeles dimensiona las columnas DataGrid en función del valor numérico proporcionado. |
Star | El modo de variación de tamaño proporcional se usa para distribuir el espacio disponible en proporciones ponderadas. En XAML, los valores proporcionales se expresan como n*, donde n representa un valor numérico. 1* equivale a *. Por ejemplo, si dos columnas de un DataGrid tienen anchos de * y 2*, la primera columna recibirá una parte del espacio disponible y la segunda columna recibirá dos partes del espacio disponible. |
La clase DataGridLengthConverter se puede usar 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 ajuste de tamaño se establece en Auto o SizeToCells, las columnas crecen según el ancho de su contenido visible más amplio. Al desplazarse, estos modos de ajuste de tamaño harán que las columnas se expandan si el contenido que es mayor que el tamaño de columna actual se desplaza y se hace visible. La columna no se reducirá después de que el contenido salga de la vista.
Las columnas de DataGrid también se pueden establecer para que su tamaño se ajuste automáticamente solo dentro de unos límites especificados, o bien se pueden establecer en un tamaño específico. En la tabla siguiente se muestran las propiedades que se pueden establecer para controlar el tamaño de las columnas.
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 manera predeterminada, se muestran los encabezados de columna DataGrid. Para ocultar los encabezados de columna, la propiedad HeadersVisibility debe establecerse en DataGridHeadersVisibility.Row o DataGridHeadersVisibility.None. De manera predeterminada, los encabezados de columna se muestran y su tamaño se ajusta automáticamente al tamaño de su contenido. Se puede asignar un alto específico a los encabezados de columna estableciendo la propiedad DataGrid.ColumnHeaderHeight.
Cambio de tamaño con el mouse
Los usuarios pueden cambiar el tamaño de las filas y columnas de DataGrid arrastrando los divisores de los encabezados de fila o columna. DataGrid también admite el cambio de tamaño automático de las filas y columnas haciendo doble clic en el divisor de encabezado de fila o columna. Para evitar que un usuario cambie el tamaño de columnas concretas, 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
.NET Desktop feedback