Wie die meisten WPF-Entwickler wissen, wird durch die Einstellung ScrollViewer.CanContentScroll
auf false
die Virtualisierung deaktiviert. aber ich würde gerne wissen, wie es funktioniert, weil ich versuche, die Virtualisierung zu aktivieren, während ScrollViewer.CanContentScroll
auf false
gesetzt wird. Warum die Einstellung ScrollViewer.CanContentScroll auf false setzt, um die Virtualisierung zu deaktivieren
Antwort
„Scroll derzeit erlaubt zwei Scrolling-Modi:. Glatte Pixel-für-Pixel-Bildlauf (CanContentScroll = false) oder diskreten Element-für-Element-Bildlauf (CanContentScroll = true) Derzeit WPF unterstützt nur UI-Virtualisierung, wenn sie von Element Scrollen Das pixelbasierte Scrollen wird auch "physisches Scrollen" genannt und das itembasierte Scrollen wird auch "logisches Scrollen" genannt.
Virtualisierung erfordert Artikel basierte Scrollen, damit es den Überblick über logische Einheiten (Items) zur Zeit im Auge behalten kann ... die Scroll Einstellung auf pixelbasierten sie nicht mehr Konzept der Logikeinheiten Scrollen aber nur Pixel !! !
ich oft gefragt werde, ob es einen Weg, um diese Einschränkung zu arbeiten ist. Nun, alles ist möglich, aber es gibt keine einfache Problemumgehung. Sie müssten wichtige Teile der aktuellen Virtualisierungslogik erneut implementieren, um pixelbasiertes Scrollen mit UI-Virtualisierung zu kombinieren. Sie müssten auch einige interessante Probleme lösen, die damit einhergehen. Zum Beispiel, wie berechnen Sie die Größe des Daumens, wenn die Artikelbehälter unterschiedliche Höhen haben? (Denken Sie daran, dass Sie die Höhe der virtualisierten Container nicht kennen - Sie kennen nur die Höhe der aktuell angezeigten Container.) Sie könnten einen Durchschnitt basierend auf den Ihnen bekannten Höhen annehmen, oder Sie könnten eine Liste mit den Positionshöhen, wenn Elemente in den Speicher gebracht werden (was die Genauigkeit der Daumengröße erhöhen würde, wenn der Benutzer mit dem Steuerelement interagiert). Sie können auch entscheiden, dass das pixelbasierte Scrollen nur mit Elementen mit gleicher Höhe funktioniert - dies würde die Lösung vereinfachen. Also, ja, Sie könnten eine Lösung finden, um diese Einschränkung zu umgehen, aber das ist nicht trivial.