WPF DataGrid Column Width Auto and Scrollbar

j'ai un DataGrid avec beaucoup de colonnes.

je veux Width="Auto" avec scrollbar montrant tout si fenêtre plus étroite que toutes les colonnes. Si la fenêtre est plus large, je veux que les colonnes couvrent l'espace vide pour qu'il n'y ait pas d'espace mort.

En Gros, je veux que la largeur minimale de la colonne corresponde parfaitement au contenu ou à l'en-tête. Et étendre à plus grand si la fenêtre plus large.

11
demandé sur ΩmegaMan 2012-11-29 21:49:39

2 réponses

afin de "remplir" tout l'espace horizontal dans WPF DataGrid comme vous l'avez indiqué, assurez-vous d'avoir ces propriétés définies dans XAML:

<DataGrid 
   HorizontalAlignment="Stretch" 
   HorizontalContentAlignment="Stretch" 
   ColumnWidth="*" />
24
répondu Alexander Bell 2013-05-21 04:17:43

Dans le code XAML ensemble DataGrid ColumnWidth="Auto"

dans UserControl constructor ajouter

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

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

7
répondu Brent 2013-07-19 04:07:09