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