我想在启动时指定默认排序,但仍然允许用户通过单击列标题进行排序。遗憾的是,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>

更新:我还尝试按照建议向icollectionview添加sortdescriptions,但没有得到好的结果。这是否与我正在向集合中动态添加新项有关?也就是说,在启动时,列表是空的,并且填充得很慢,也许sortdescription只应用一次?

最佳答案

看看这个MSDN Blog
从上面链接:
datagridcolumn.sortdirection实际上不对列进行排序。
datagridcolumn.sortdirection用于将datagridcolumnheader中的可视箭头排队,以便向上、向下或不显示。实际上,除了单击DataGridColumnHeader之外,还可以以编程方式设置DATAGIDID.ITEM.SoStRoad。

关于c# - DataGrid SortDirection被忽略,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8556302/

10-11 16:20