2010-08-26 5 views
0

J'ai un ListView mis à jour fréquemment, à intervalles irréguliers.Faites défiler vers le bas sur un nouvel élément. Ma méthode fige la barre de défilement

Je le veux pour que, lors de la réception d'une mise à jour, l'élément défile dans la vue.

Je sais que le code pour le faire:

logListView.ScrollIntoView(logListView.Items[logListView.Items.Count - 1]); 

Je ne sais pas où le mettre pour qu'il se produit lorsque le ListView est mis à jour. J'ai essayé de le placer dans le gestionnaire d'événements LayoutUpdated de ListView, mais quand j'essaye de faire défiler pendant une période où il n'y a pas de mises à jour (je sais qu'il n'y a pas de mises à jour parce que j'ai activé le message off) la vue est coincée en bas. Je suppose que c'est parce que le défilement soulève un événement LayoutUpdated.

Comment faire en sorte que ListView défile vers le bas lorsqu'il reçoit un nouvel élément?

Répondre

2

Jetez un oeil à la réponse à WPF ListBox Scroll when item added. La propriété Items est un ItemCollection, qui implémente INotifyCollectionChanged, afin que vous puissiez utiliser l'événement CollectionChanged. Cela devrait marcher aussi bien pour ListView que pour ListBox, mais si vous utilisez ScrollIntoView, je suppose que vous avez de toute façon un ListBox.

INotifyCollectionChanged collection = logListView.Items; 
collection.CollectionChanged += collection_CollectionChanged; 
+0

Je peux confirmer que j'ai un ListView. Cela fonctionne pour ListView. Merci pour votre réponse, c'est juste ce dont j'avais besoin. –

Questions connexes