J'utilise DataGrids en XAML (pas Silverlight) avec des colonnes redimensionnables, le DataGrid se développera si l'utilisateur redimensionne l'écran.
Actuellement, si les largeurs de toutes les colonnes DataGrid sont inférieures à la largeur du DataGrid, j'obtiens une "colonne" supplémentaire apparaissant qui n'est pas cliquable et ne sert à rien.
Est-ce que quelqu'un sait comment faire en sorte qu'une colonne soit toujours redimensionnée pour remplir tout l'espace restant?
AutoGenerateColumns="True"
?<DataGrid AutoGenerateColumns="True" ColumnWidth="*" ItemsSource={Binding} />
ColumnWidth="*"
sur le DataGrid queWidth="*"
sur les colonnes individuelles ont l'effet souhaitéAssurez-vous que votre DataGrid est
Width
défini sur quelque chose comme{Binding Path=ActualWidth, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=Window,AncestorLevel=1}}
.Comme ça, votre réglage d'
Width="*"
attribut sur lesDataGrid.Columns/DataGridXXXXColumn
éléments devrait fonctionner.la source
Comme indiqué, le
ColumnWidth="*"
a parfaitement fonctionné pour un DataGrid en XAML.Je l'ai utilisé dans ce contexte:
la source
Définissez la
Width
propriété des colonnes sur une largeur proportionnelle telle que*
la source
Mes 2 Cent ->
Très tard pour faire la fête
DataGrid -> Column -> Width = "*" ne fonctionne que si le conteneur parent DataGrid a une largeur fixe.
exemple: je mets le DataGrid dans Grid -> Column dont width = "Auto" puis Width = "*" in DataGrid ne fonctionne pas mais si vous définissez Grid -> Column Width = "450" signifie fixe alors cela fonctionne bien
la source
Un autre tour sur le même thème:
la source
J'ai ajouté un HorizontalAlignment = "Center" (la valeur par défaut est "Strech") et cela a résolu mon problème car il a rendu la grille de données aussi large que nécessaire. (Suppression du paramètre Largeur de la grille de données si vous en avez un.)
la source
Cela ne développera pas la dernière colonne de la grille xaml pour prendre l'espace restant si
AutoGeneratedColumns="True"
.la source
définir la largeur d'une colonne sur n'importe quelle valeur, c'est-à-dire width = "*"
la source
Pour ceux qui recherchent une solution de contournement C #:
Si vous avez besoin pour une raison quelconque d'activer les "Colonnes auto-générées", une chose que vous pouvez faire est de spécifier la largeur de toutes les colonnes à l'exception de celles que vous souhaitez redimensionner automatiquement (cela ne prendra pas l'espace restant , mais il sera redimensionné au contenu de la cellule ).
Exemple (dgShopppingCart est mon DataGrid):
Pour moi, cela fonctionne comme une solution de contournement car j'avais besoin de redimensionner le DataGrid lorsque l'utilisateur agrandit la fenêtre.
la source