web-dev-qa-db-fra.com

WPF DataGrid Column Width Auto et Scrollbar

J'ai un DataGrid avec de nombreuses colonnes.

Je voudrais Width="Auto" avec barre de défilement affichant tout si la fenêtre est plus étroite que toutes les colonnes. Si la fenêtre est plus large, je veux que les colonnes s'étendent sur un espace vide afin qu'il n'y ait pas d'espace mort.

Fondamentalement, je veux que la largeur minimale de la colonne corresponde parfaitement au contenu ou à l'en-tête. Et agrandissez si la fenêtre est plus large.

15
Brent

Dans XAML, définissez DataGrid ColumnWidth="Auto"

Dans le constructeur UserControl, ajoutez

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

L'utiliser avec un DataGrid personnalisé et fonctionne très bien.

9
Brent

Afin de "remplir" tout l'espace horizontal dans WPF DataGrid comme vous l'avez spécifié, assurez-vous que ces propriétés sont définies dans XAML :

<DataGrid 
   HorizontalAlignment="Stretch" 
   HorizontalContentAlignment="Stretch" 
   ColumnWidth="*" />
26
Alexander Bell