J'ai un DataGrid défini commela largeur des colonnes DataGrid WPF et réordonnancement
<wpftoolkit:DataGrid
x:Name="AccountsDataGrid"
AutoGenerateColumns="False"
ItemsSource="{Binding Path=Accounts}"
ColumnReordered="DataGrid_ColumnReordered"
SelectionUnit="FullRow"
RowHeaderWidth="0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
>
<wpftoolkit:DataGrid.Columns>
<wpftoolkit:DataGridTextColumn Header="Account Id" Binding="{Binding Path=AccountId}" Width="Auto" />
<wpftoolkit:DataGridTextColumn Header="Account Name" Binding="{Binding Path=AccountName}" Width="*" />
</wpftoolkit:DataGrid.Columns>
</wpftoolkit:DataGrid>
qui la charge ressemble beaucoup. la première colonne correspond à la largeur minimale nécessaire pour s'adapter à la fois au contenu et à l'en-tête. la deuxième colonne s'étire pour remplir le reste de la largeur du DataGrid (donc je n'ai pas une troisième colonne de remplissage). Mais si j'essaie de réorganiser les colonnes, la colonne AccountName ne peut pas être redimensionnée à une largeur inférieure à celle de sa largeur avant la réorganisation. J'ai donc ajouté un gestionnaire sur l'événement ColumnReordered, en pensant que je peux simplement réinitialiser les largeurs de colonnes, mais cela ne semble pas fonctionner. En fait, il réduit la colonne AccountId à presque rien, et la colonne AccountName ne peut toujours pas être redimensionnée plus petit.
private void DataGrid_ColumnReordered(object sender, Microsoft.Windows.Controls.DataGridColumnEventArgs e)
{
foreach (DataGridColumn column in AccountsDataGrid.Columns)
{
if (column.Equals(AccountsDataGrid.Columns.Last()))
{
column.Width = new DataGridLength(1.0, DataGridLengthUnitType.Star);
}
else
{
column.Width = new DataGridLength(1.0, DataGridLengthUnitType.Auto);
}
}
}
est-il une meilleure façon de gérer la largeur des colonnes et pourquoi le redimensionnement de la colonne réordonnancement briser la colonne de capacité