pourquoi mettre ScrollViewer.CanContentScroll de faux désactiver la virtualisation

comme la plupart des développeurs de WPF le savent, définir ScrollViewer.CanContentScrollfalse va désactiver la virtualisation; mais j'aimerais savoir comment ça marche, parce que j'essaie d'activer la virtualisation en positionnant ScrollViewer.CanContentScrollfalse.

28
demandé sur Adi Lester 2010-09-16 11:35:21

2 réponses

" ScrollViewer permet actuellement deux modes de défilement: défilement en pixels lisses (CanContentScroll = false) ou défilement discret item-by-item (CanContentScroll = true). À l'heure actuelle, WPF ne prend en charge la virtualisation de L'UI que lorsque vous faites défiler l'application par article. Le défilement basé sur un Pixel est aussi appelé " défilement physique "et le défilement basé sur un élément est aussi appelé"défilement logique"."

La virtualisation nécessite un scrolling basé sur les éléments pour qu'il puisse garder la trace des unités logiques (les articles) actuellement en vue... Paramétrer le ScrollViewer sur un défilement basé sur un pixel il n'y a plus de concept d'unités logiques mais seulement des pixels!!!

45
répondu rudigrobler 2018-08-21 14:09:07

INTERFACE utilisateur Virtualisation

on me demande souvent s'il y a une façon de contourner cette limitation. Eh bien, tout est possible, mais il n'y a pas de facile solution de contournement. Vous devrez ré-implémenter des parties importantes de la logique de virtualisation actuelle pour combiner le défilement basé sur les pixels avec la virtualisation de L'interface utilisateur. Vous devriez également résoudre certains problèmes intéressants qui viennent avec elle. Par exemple, comment calculer la taille du pouce lors de l' élément de conteneurs ont des hauteurs différentes? (Rappelez – vous que vous ne connaissez pas la hauteur des conteneurs virtualisés-vous ne connaissez que la hauteur des conteneurs qui sont actuellement affichés.) Vous pouvez supposer une moyenne basée sur les hauteurs que vous connaissez, ou vous pouvez garder une liste avec les hauteurs de l'item que les articles sont apportés dans la mémoire (ce qui augmenterait la précision de la taille du pouce que l'utilisateur interagit avec le contrôle). Vous pouvez également décider que le scrolling basé sur les pixels ne fonctionne qu'avec des éléments qui sont de la même hauteur – cela simplifierait la solution. Donc, oui, vous pourriez trouver une solution pour contourner cette limitation, mais ce n'est pas trivial.

5
répondu egoroveo 2014-01-16 09:15:41