Question

J'ai un ListBox qui peut avoir plusieurs lignes de dossiers DB, templated y compris un Image, lié à un ObservableCollection<MyItem>. Parfois, la collection pourrait contenir des milliers d'articles.

La performance est grande, mais le défilement est le comportement par défaut saccadée. Je voudrais qu'il ait un défilement fluide, donc je décoché ScrollViewer.CanContentScroll.

Maintenant, j'ai un défilement fluide, mais la performance est horrible: les données sont récupérées dans un thread séparé, et le fil termine rapidement, mais il faut 10-20 secondes pour les résultats à afficher dans le ListBox. Je suppose que cela est dû décochant ScrollViewer.CanContentScroll change la VirtualizingStackPanel sous-jacente à un StackPanel régulier et il est donc de charger la collection avant d'afficher les résultats.

Alors, ma question est la suivante: comment puis-je conserver le défilement en douceur sans sacrifier le comportement de VirtualizingStackPanel et de la performance

?
Était-ce utile?

La solution

Lorsque vous décocher CanContentScroll, vous perdre la virtualisation . Et la réponse est vraiment frustrant: Pour l'instant il n'y a pas de solution hors de la boîte:. (

PS: Ce n'est pas le premier post ici, demander cette question très .

Autres conseils

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

[Notez que @ commentaire de Guilluame était ici bien avant cette réponse, mais il n'a pas été particulièrement visible lorsque l'écrémage des réponses.]

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top