清除排序描述后如何删除wpf网格排序箭头

Posted

技术标签:

【中文标题】清除排序描述后如何删除wpf网格排序箭头【英文标题】:How to remove wpf grid sort arrow after clearing sort descriptions 【发布时间】:2011-07-21 02:09:19 【问题描述】:

我单击网格标题对列进行排序,然后单击“重置”按钮通过其集合视图清除排序描述。但是排序箭头图标仍然存在于标题中。怎么去掉?

【问题讨论】:

【参考方案1】:

我能想到的简单解决方案是

foreach (DataGridColumn column in DataGridView.Columns)

    column.SortDirection = null;

【讨论】:

【参考方案2】:

我在尝试弄清楚如何完全从网格中清除排序时遇到了这个问题。感谢 [krishnaaditya] 回答如何从标题中清除排序箭头。

using System.Windows.Data;
using System.ComponentModel;

ICollectionView view = CollectionViewSource.GetDefaultView(resultsGrid.ItemsSource);
if (view != null && view.SortDescriptions.Count > 0)

    view.SortDescriptions.Clear();
    foreach (DataGridColumn column in resultsGrid.Columns)
    
        column.SortDirection = null;
    

【讨论】:

这是完整的解决方案。第一个答案只删除了排序,但没有删除标题中的箭头。 不幸的是,如果您对使用转换器显示漂亮数据的列进行排序(例如,在一列中您有一个枚举,而您使用转换器来显示其他内容),则上述解决方案都不起作用.在这种情况下,SortDescriptions.Count 始终保持为 0。当您尝试重置排序时,没有任何反应。 这是因为您在这里弄乱了源,而不是实际显示的值。试试 DataGrid.Items.SortDescriptions。这就是实际值所在的位置。使用 DeferRefresh 将其包装在使用中以获得最佳性能。

以上是关于清除排序描述后如何删除wpf网格排序箭头的主要内容,如果未能解决你的问题,请参考以下文章

样式化 wpf 数据网格

具有本地排序的缓冲存储(客户端)

在 ExtJs 网格中可排序为 false 后,列标题显示箭头图标

对 WPF 数据网格中的多列进行排序

排序后WPF DataGrid滚动到顶部

删除 jQuery DataTables 中的排序箭头