WPF DataGrid列宽和重新排序
我有一个DataGrid定义为WPF DataGrid列宽和重新排序,wpf,xaml,datagrid,wpfdatagrid,column-width,Wpf,Xaml,Datagrid,Wpfdatagrid,Column Width,我有一个DataGrid定义为 <wpftoolkit:DataGrid x:Name="AccountsDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding Path=Accounts}" ColumnReordered="DataGrid_ColumnReordered" SelectionUnit="FullRow" Row
<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>
是否有更好的方法来处理列宽,以及为什么列重新排序会破坏列的大小调整功能列在columns集合中的位置不变。只有显示索引在更改。试试这个:
private void DataGrid_ColumnReordered(object sender, DataGridColumnEventArgs e)
{
int lastColumnOrder = AccountsDataGrid.Columns.Count() - 1;
foreach (DataGridColumn column in AccountsDataGrid.Columns)
{
if (column.DisplayIndex == lastColumnOrder)
{
column.Width = new DataGridLength(1.0, DataGridLengthUnitType.Star);
}
else
{
column.Width = new DataGridLength(1.0, DataGridLengthUnitType.Auto);
}
}
}
private void DataGrid_ColumnReordered(object sender, DataGridColumnEventArgs e)
{
int lastColumnOrder = AccountsDataGrid.Columns.Count() - 1;
foreach (DataGridColumn column in AccountsDataGrid.Columns)
{
if (column.DisplayIndex == lastColumnOrder)
{
column.Width = new DataGridLength(1.0, DataGridLengthUnitType.Star);
}
else
{
column.Width = new DataGridLength(1.0, DataGridLengthUnitType.Auto);
}
}
}