Estoy usando DataGrids en XAML (no Silverlight) con columnas de tamaño variable, el DataGrid se expandirá si el usuario cambia el tamaño de la pantalla.
Actualmente, si el ancho de todas las columnas de DataGrid es menor que el ancho de DataGrid, aparece una "columna" adicional que no se puede hacer clic y no tiene ningún propósito.
¿Alguien sabe cómo hacer que una columna siempre cambie de tamaño para llenar todo el espacio restante?
AutoGenerateColumns="True"
?<DataGrid AutoGenerateColumns="True" ColumnWidth="*" ItemsSource={Binding} />
ColumnWidth="*"
en DataGrid comoWidth="*"
en las columnas individuales tienen el efecto deseadoAsegúrese de que su DataGrid se haya
Width
configurado en algo como{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}
.Así, su configuración de
Width="*"
atributo enDataGrid.Columns/DataGridXXXXColumn
elementos debería funcionar.fuente
Como se señaló,
ColumnWidth="*"
funcionó perfectamente bien para un DataGrid en XAML.Lo usé en este contexto:
fuente
Establezca la
Width
propiedad de las columnas para que tenga un ancho proporcional, como*
fuente
Mi 2 centavos ->
Muy tarde para la fiesta
DataGrid -> Columna -> Ancho = "*" solo funciona si el contenedor principal de DataGrid tiene un ancho fijo.
ejemplo: puse el DataGrid en Grid -> Columna cuyo ancho = "Auto" luego Width = "*" en DataGrid no funciona, pero si configura Grid -> Column Width = "450" significa fijo, entonces funciona bien
fuente
Otro giro sobre el mismo tema:
fuente
Agregué HorizontalAlignment = "Center" (el valor predeterminado es "Strech") y resolvió mi problema porque hizo que la cuadrícula de datos solo fuera tan ancha como fuera necesario. (Se eliminó la configuración de Ancho de la cuadrícula de datos si tiene una).
fuente
Esto no expandirá la última columna de la cuadrícula xaml para ocupar el espacio restante si
AutoGeneratedColumns="True"
.fuente
establezca el ancho de UNA columna en cualquier valor, es decir, ancho = "*"
fuente
Para aquellos que buscan una solución alternativa de C #:
Si por alguna razón necesita tener habilitadas las "Columnas autogeneradas", una cosa que puede hacer es especificar el ancho de todas las columnas excepto las que desea que se redimensionen automáticamente ( no ocupará el espacio restante , pero cambiará el tamaño al contenido de la celda ).
Ejemplo (dgShopppingCart es mi DataGrid):
Para mí, funciona como una solución porque necesitaba cambiar el tamaño de DataGrid cuando el usuario maximiza la ventana.
fuente