WPF DataGrid ширина столбца авто и полоса прокрутки

У меня есть DataGrid со многими столбцами.

Я хочу Width="Auto" с полосой прокрутки, показывающей все, если окно уже, чем все столбцы. Если окно шире, я хочу, чтобы столбцы охватывали пустое пространство, чтобы не было мертвого пространства.

в основном я хочу, чтобы минимальная ширина столбца полностью соответствовала содержимому или заголовку. И расширить до большего, если окно шире.

2 ответов


для того, чтобы "заполнить" все горизонтальное пространство в WPF DataGrid Как вы указали, убедитесь, что эти свойства установлены в XAML:

<DataGrid 
   HorizontalAlignment="Stretch" 
   HorizontalContentAlignment="Stretch" 
   ColumnWidth="*" />

в XAML установите DataGrid ColumnWidth="Auto"

в конструкторе UserControl добавить

dataGrid.Loaded += (s, e) => { // Column widths
    dataGrid.Columns.AsParallel().ForEach(column => {
        column.MinWidth = column.ActualWidth;
        column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
    });
};

используя это с пользовательским DataGrid и отлично работает.