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