J'utilise une arborescence virtualisée dans WPF pour afficher une hiérarchie profonde à 3 niveaux avec un plus grand nombre de nœuds enfants (5000+).Bogue défilant dans WPF virtualisé Treeview
<TreeView Grid.Row="0" Grid.Column="0" Name="TestTree" ItemsSource="{Binding}" VirtualizingStackPanel.IsVirtualizing="True">
...
</TreeView>
Ce qui arrive est que si j'élargissons les nœuds enfants au 3ème niveau et faites défiler jusqu'au bout le contenu n'affiche pas correctement et la barre de défilement « sauts périlleux arrière » et je peux continuer à faire défiler vers le bas pour toujours, le comportement se répète après un peu plus de défilement.
Cela se produit uniquement en mode virtualisé, mais malheureusement, en raison du grand nombre de nœuds enfants, le temps de chargement de l'arborescence en mode non virtualisé est prohibitif.
J'ai lu les liens suivants sur SO here et le thread d'origine sur les forums MSDN here mais la solution proposée d'appeler UpdateLayout()
dans le gestionnaire SelectedItemChanged ne fonctionne pas pour moi.
Quelqu'un d'autre a-t-il déjà expérimenté ce comportement étrange, et si oui existe-t-il une solution de contournement?
Appréciez toute entrée - merci!
Le problème est que la plupart des noeuds sont au même niveau, cette optimisation ne serait pas vraiment me acheter quoi que ce soit que je dois charger tous ces nœuds en même temps en tous cas. – BrokenGlass