Reputation: 1388
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.
Upvotes: 17
Views: 58895
Reputation: 1388
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.
Upvotes: 13
Reputation: 7918
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="*" />
Upvotes: 28