ListBox, VirtualizingStackPanel e rolagem suave no WPF

eu tenho umListBox que pode ter muitas linhas de registros de banco de dados modelados, incluindo umImage, ligado a umObservableCollection<MyItem>. Às vezes, a coleção pode conter milhares de itens.

O desempenho é ótimo, mas a rolagem é o comportamento saltitante padrão. Eu gostaria que tivesse rolagem suave, então eu desmarcadaScrollViewer.CanContentScroll.

Agora tenho rolagem suave, mas o desempenho é horrível: os dados são recuperados em um thread separado, e o thread é concluído rapidamente, mas leva de 10 a 20 segundos para os resultados serem exibidos noListBox. Eu suponho que isso é porque desmarcandoScrollViewer.CanContentScroll muda o subjacenteVirtualizingStackPanel para um regularStackPanel e por isso está carregando a coleção inteira antes de exibir os resultados.

Então, minha pergunta é a seguinte: como faço para manter a rolagem suave sem sacrificar oVirtualizingStackPanel comportamento e desempenho?

questionAnswers(2)

yourAnswerToTheQuestion