ListBox, VirtualizingStackPanel и гладкая прокрутка в WPF

У меня есть a ListBox это может иметь много строк шаблонных записей DB, включая Image, связанный с ObservableCollection<MyItem>. Иногда набор мог содержать тысячи объектов.

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

Теперь у меня есть гладкая прокрутка, но производительность является ужасающей: данные получены в отдельном потоке, и поток заканчивается быстро, но требуется 10-20 секунд для результатов для показа в ListBox. Я предполагаю, что это вызвано тем, что снятие выделения ScrollViewer.CanContentScroll изменяет базовое VirtualizingStackPanel постоянному клиенту StackPanel и таким образом, это загружает весь набор прежде, чем отобразить результаты.

Таким образом, мой вопрос - это: как я сохраняю гладкую прокрутку, не жертвуя VirtualizingStackPanel поведение и производительность?

17
задан Dave Clemmer 8 September 2011 в 16:04
поделиться

1 ответ

Сняв флажок с CanContentScroll, вы теряете виртуализацию . И ответ очень разочаровывает: На данный момент не существует готового решения :(.

PS: Это не первое сообщение здесь, задающее этот самый вопрос.

.
7
ответ дан 30 November 2019 в 14:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: