ListBox, VirtualizingStackPanel, et Smooth Scrolling dans WPF

j'ai un ListBox , qui pourrait avoir de nombreuses lignes de type "modèle" DB records, dont un Image , lié à un ObservableCollection<MyItem> . Parfois, la collection peut contenir des milliers d'objets.

la performance est grande, mais le défilement est le comportement de saut par défaut. Je voudrais qu'il ait un défilement lisse, donc je n'ai pas vérifié ScrollViewer.CanContentScroll .

maintenant j'ai un scrolling en douceur, mais la performance est épouvantable: les données sont récupérées dans un séparez le fil, et le fil se termine rapidement, mais il faut 10-20 secondes pour que les résultats apparaissent dans le ListBox . Je suppose que c'est parce que unchecking ScrollViewer.CanContentScroll change le VirtualizingStackPanel sous-jacent à un StackPanel régulier et donc il charge la collection entière avant d'afficher les résultats.

alors ma question Est la suivante: Comment puis-je conserver le scrolling sans sacrifier le comportement et la performance VirtualizingStackPanel ?

16
demandé sur Dave Clemmer 2009-12-17 22:44:48

2 réponses

lorsque vous décochez CanContentScroll, vous perdre la virtualisation . Et la réponse est vraiment frustrante: pour l'instant, il n'y a pas de solution miracle :(.

PS: ce n'est pas le premier post ici, demandant cette même question .

6
répondu Anvaka 2017-05-23 12:10:06

si vous utilisez .NET 4.5 (ou 4.0 Si vous êtes prêt à hacker un peu) alors il ya une réponse ici .

[notez que le commentaire de @Guilluame était ici bien avant cette réponse, mais il n'était pas particulièrement visible lorsque vous cherchiez des réponses.]

3
répondu Zodman 2017-05-23 11:47:13