Есть ли способ сортировки списка без необходимости воссоздания всех его элементов? - PullRequest
1 голос
/ 23 августа 2011

У меня есть listView, отображающий кучу графиков. Я могу отсортировать этот список, используя разные критерии. К сожалению, когда я выполняю сортировку, операция заняла больше времени, чем ожидалось, и я понял, что после запуска сортировки все графики воссоздаются.

Мой источник данных - это наблюдаемая коллекция, и представление состоит из элемента управления диаграммы и нескольких меток. Я выполняю сортировку представления, используя описание сортировки представления, поэтому сортировку следует выполнять в представлении, а не в источнике данных, верно?

lstView.Items.SortDescriptions.Clear();
lstView.Items.SortDescriptions.Add(new SortDescription(_field, _lstViewDirection));

Я искал вокруг, и кажется, что сортировка запускает обновление, которое удаляет элементы пользовательского интерфейса из элемента управления и воссоздает их ... но это кажется ненужным, учитывая, что я только упорядочиваю позиции элементов пользовательского интерфейса.

Есть ли способ избежать такого поведения обновления и только изменить порядок расположения элементов пользовательского интерфейса?

1 Ответ

0 голосов
/ 23 августа 2011

Вам необходимо использовать виртуализацию, чтобы перерисовывались только элементы, отображаемые в пользовательском интерфейсе, а не вся коллекция.

http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx

...