Правильный способ сортировки GridView или его поддерживающей ObservableCollection?
Недавно я писал хобби-проект по WinUI 3 и столкнулся с некоторыми проблемами.
В моем приложении у меня есть файл, привязанный в XAML к файлу, как рекомендовано в документации WinUI. Это отлично работает, но теперь мне нужно иметь возможность сортировать и фильтровать элементы в, и неясно, какой из них наиболее «правильный» или идиоматический.
Поиск в Google показывает, что у WPF есть кое-что в
В настоящее время я обнаружил, что единственное, что работает, - это удалить привязку XAML, изменить
Я был бы очень признателен за любое понимание этого.
2 ответа
В WinUI вы должны сортировать исходную коллекцию, т.е.
ObservableCollection<T>
, самим собой.
Это модифицированный (и довольно непроверенный)
BubbleSort
метод отсюда , который должен пригодиться:
public static class ObservableCollectionExtensions
{
public static void BubbleSort<T>(this ObservableCollection<T> o) where T : IComparable
{
for (int i = o.Count - 1; i >= 0; i--)
for (int j = 1; j <= i; j++)
{
IComparable o1 = o[j - 1];
IComparable o2 = o[j];
if (o1.CompareTo(o2) > 0)
o.Move(j - 1, j);
}
}
}
Использование: :
someObservableCollection.BubbleSort();
Я не уверен, что этот метод сортировки UWP полностью совместим с WinUI 3, поскольку я его не пробовал. Но в примере заказов Contoso https://github.com/microsoft/Windows-appsample-customers-orders-database есть пример кода, который изменяет Datagrid, когда событие сортировки запускается из Datagrid. Обратитесь к DataGridHelper в папке Views.