DataGrid SortDirection被忽略

Voo*_*Voo 13 c# wpf xaml datagrid sortdirection

我想在启动时指定默认顺序,但仍然允许用户通过单击列标题进行排序.遗憾的是,SortDirection属性在设置时被忽略 - 即我们得到正确的列标题箭头,但没有任何排序.

手动单击标题,可以正确排序数据,因此不是排序本身.这是我正在使用的简化版本:

<DataGrid ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=CurrentView}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Header 1" Binding="{Binding ApplicationName}"/>
        <DataGridTextColumn Header="Header 2" 
               Binding="{Binding TotalTime}" SortDirection="Descending"/>
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

更新:我还尝试按照建议将SortDescriptions添加到ICollectionView,但没有很好的结果.这可能与我正在动态地向集合中添加新项目这一事实有关吗?即在启动时列表是空的并且慢慢填充,也许排序描述只应用一次?

Mar*_*all 14

看看这个MSDN博客

从上面的链接:

DataGridColumn.SortDirection实际上不对列进行排序.
DataGridColumn.SortDirection用于将DataGridColumnHeader中的可视箭头排入队列,指向上,下或不显示.要实际对列进行排序而不是单击DataGridColumnHeader,可以通过编程方式设置DataGrid.Items.SortDescriptions.