У меня есть DataGrid определяется какWPF DataGrid ширины столбцов и переназначения
<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>
, который по нагрузке выглядит большим. первый столбец соответствует минимальной ширине, необходимой для размещения как содержимого, так и заголовка. второй столбец растягивается, чтобы заполнить остальную ширину DataGrid (поэтому у меня нет третьего столбца наполнителя). Но если я попытаюсь изменить порядок столбцов, столбец AccountName не может быть изменен до ширины меньше, чем его ширина перед переупорядочением. Поэтому я добавил обработчик события ColumnReordered, полагая, что могу просто сбросить ширину столбцов, но он, похоже, не работает. Фактически, он сжимает столбец AccountId почти до нуля, а столбцы AccountName по-прежнему не могут быть изменены меньше.
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);
}
}
}
Есть ли лучший способ справиться ширину столбцов и почему столбец переназначения разорвать столбец изменения размера способность