Как удалить стрелку сортировки сетки wpf после очистки описаний сортировки

Я щелкаю заголовок сетки, чтобы отсортировать столбец, а затем нажимаю кнопку «Сброс», чтобы очистить описания сортировки в представлении коллекции. Но значок стрелки сортировки все еще остается в заголовке. Как это убрать?


person John    schedule 23.03.2011    source источник


Ответы (2)


простое решение, которое я могу придумать, это

foreach (DataGridColumn column in DataGridView.Columns)
{
    column.SortDirection = null;
}
person krishnaaditya    schedule 30.03.2011

Я столкнулся с этим вопросом, пытаясь понять, как полностью очистить сортировку от сетки. Спасибо [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;
    }
}
person Andrea    schedule 02.03.2012
comment
Это полное решение. Первый ответ убрал только сортировку, но не стрелку из заголовка. - person Alexandru Dicu; 22.10.2013
comment
К сожалению, ни одно из вышеперечисленных решений не работает, если вы сортируете столбец, который использует преобразователь для отображения хороших данных (например, в одном столбце у вас есть Enum, а вы используете преобразователь для отображения чего-то еще). В этой ситуации SortDescriptions.Count всегда остается равным нулю. Когда вы пытаетесь сбросить сортировку, ничего не происходит. - person Alexandru Dicu; 21.08.2015
comment
Это потому, что вы здесь ошибаетесь с источником, а не с фактическим отображаемым значением. Попробуйте DataGrid.Items.SortDescriptions. Вот где реальные значения. Оберните его в использование с помощью DeferRefresh для лучшей производительности. - person Mark A. Donohoe; 08.12.2015