Подтвердить что ты не робот

Ширина столбца WPF DataGrid Авто и панель прокрутки

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

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

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

4b9b3361

Ответ 1

В 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 и отлично работает.

Ответ 2

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

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