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.
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.
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="*" />