У меня есть a ListBox
это может иметь много строк шаблонных записей DB, включая Image
, связанный с ObservableCollection<MyItem>
. Иногда набор мог содержать тысячи объектов.
Производительность является большой, но прокрутка является нервным поведением по умолчанию. Я хотел бы, чтобы это имело гладкую прокрутку, таким образом, я снял флажок ScrollViewer.CanContentScroll
.
Теперь у меня есть гладкая прокрутка, но производительность является ужасающей: данные получены в отдельном потоке, и поток заканчивается быстро, но требуется 10-20 секунд для результатов для показа в ListBox
. Я предполагаю, что это вызвано тем, что снятие выделения ScrollViewer.CanContentScroll
изменяет базовое VirtualizingStackPanel
постоянному клиенту StackPanel
и таким образом, это загружает весь набор прежде, чем отобразить результаты.
Таким образом, мой вопрос - это: как я сохраняю гладкую прокрутку, не жертвуя VirtualizingStackPanel
поведение и производительность?
Сняв флажок с CanContentScroll, вы теряете виртуализацию . И ответ очень разочаровывает: На данный момент не существует готового решения :(.
PS: Это не первое сообщение здесь, задающее этот самый вопрос.
.