Я разрабатываю приложение, которое используется для работы с 20k + элементами, отображаемыми в списке WPF, поэтому очевидно, что их нужно разделить на страницы.Пейджинг с CreateDerivedCollection
Мое текущее решение немного лага:
я применить фильтр с помощью команды асинхронной с Paraller.ForEach
по всем пунктам, и я установить MatchesFilter
собственность. Это прекрасно работает:
FilteredItems = _allItems.CreateDerivedCollection(x => x, x
=> x.MatchesFilter, scheduler: RxApp.TaskpoolScheduler);
_count =FilteredSignatures.CountChanged.StartWith(0).ToProperty(this, x => x.Count);
Это быстро, сохраняет пользовательский интерфейс отзывчивый и вы можете видеть граф быстро меняется в WPF Label.
При фильтрации концов, я делаю (на основном потоке):
Items.Clear();
foreach (var s in FilteredItems.Skip((CurrentPage - 1) * temsPerPage).Take(ItemsPerPage))
Items.Add(s);
И это где моя проблема. Каждый элемент отображается вместе с изображением, которое загружается async из URL-адреса. Элемент Clear()
незаметно замораживает пользовательский интерфейс. У меня 250 элементов на странице (это не должно быть меньше, потому что пользователь должен иметь возможность искать элемент на основе изображения своим глазом).
Есть ли лучший способ сделать это? Я знаю о DynamicData
, но использует RxUI 6.x.
Я получаю сообщение об ошибке Reactive.Interfaces 2.5.5. Какую версию я должен использовать? –
Последняя версия на 4.x, поскольку она основана на Rx 2.x. https://www.nuget.org/packages/DynamicData/4.10.1.1194 – Erlend
Спасибо. Просто из любопытства, можно ли достичь чистого RxUI? –