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