2010-09-16 25 views

Répondre

44

« ScrollViewer permet actuellement deux modes de défilement:. Défilement pixel par pixel lisse (CanContentScroll = false) ou le défilement (CanContentScroll = true) élément par élément discret Actuellement WPF prend en charge la virtualisation de l'interface utilisateur uniquement lors du défilement par poste Le défilement basé sur les pixels est également appelé "défilement physique" et le défilement par éléments est également appelé "défilement logique". "

La virtualisation nécessite un défilement basée sur l'article de sorte qu'il peut garder une trace des unités logiques (éléments) actuellement en vue ... Réglage du ScrollViewer à base de pixels de défilement leur est pas plus concept d'unités logiques, mais seulement des pixels !! !

5

UI Virtualization

Je suis souvent demandé s'il y a un moyen de contourner cette limitation. Eh bien, tout est possible, mais il n'y a pas facile solution de contournement. Vous devrez réimplémenter des parties significatives de la logique de virtualisation actuelle pour combiner le défilement basé sur les pixels avec la virtualisation de l'interface utilisateur. Vous devrez également résoudre certains problèmes intéressants qui l'accompagnent. Par exemple, comment calculez-vous la taille du pouce lorsque les conteneurs d'articles ont des hauteurs différentes? (N'oubliez pas que vous ne connaissez pas la hauteur des conteneurs virtualisés - vous ne connaissez que la hauteur des conteneurs actuellement affichés.) Vous pouvez supposer une moyenne basée sur les hauteurs que vous connaissez, ou vous pouvez garder une liste avec les la hauteur des objets lorsque les objets sont mis en mémoire (ce qui augmenterait la précision de la taille du pouce lorsque l'utilisateur interagit avec le contrôle). Vous pouvez également décider que le défilement basé sur des pixels ne fonctionne qu'avec des objets de même hauteur, ce qui simplifierait la solution. Donc, oui, vous pourriez trouver une solution pour contourner cette limitation, mais ce n'est pas trivial.