I have a DataGrid with many columns.
I want Width="Auto"
with scrollbar showing everything if window narrower than all columns. If window wider I want columns to span empty space so there is no dead space.
Basically I want the column minimum width to fully fit contents or header. And expand to larger if window wider.
In order to "fill" all horizontal space in WPF DataGrid
as you specified, make sure you have these properties set in XAML:
<DataGrid
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
ColumnWidth="*" />
In XAML set DataGrid ColumnWidth="Auto"
In UserControl constructor add
dataGrid.Loaded += (s, e) => { // Column widths
dataGrid.Columns.AsParallel().ForEach(column => {
column.MinWidth = column.ActualWidth;
column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
});
};
Using this with a custom DataGrid and works great.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With