如何在清除排序描述后删除WPF网格的排序箭头

8

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

2个回答

9

在我试图完全清除网格排序时,我遇到了这个问题。感谢[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;
    }
}

1
这是完整的解决方案。第一个答案只是删除了排序,但没有从标题中删除箭头。 - Alexandru Dicu
不幸的是,如果您对使用转换器显示漂亮数据的列进行排序(例如,在一列中,您有一个枚举,并使用转换器显示其他内容),则上述解决方案均无效。在这种情况下,SortDescriptions.Count始终保持为0。当您尝试重置排序时,什么也不会发生。 - Alexandru Dicu
这是因为您在操作源而非实际显示的值。请尝试使用DataGrid.Items.SortDescriptions,它们才是实际的值。将其包装在using中,并使用DeferRefresh以获得最佳性能。 - Mark A. Donohoe
顺便说一句,如果你正在使用CustomSort方法,SortDescriptions.Count将为零,但你仍然希望将SortDirection值设置为null以清除箭头。 - undefined

6

simple solution i can think of is

foreach (DataGridColumn column in DataGridView.Columns)
{
    column.SortDirection = null;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接