2010-09-16 45 views

回答

44

“的ScrollViewer目前允许两个滚动模式:平滑像素的逐像素滚动(CanContentScroll =假)或离散项逐项滚动(CanContentScroll =真)当前WPF仅由项目滚动时支持UI虚拟。基于像素的滚动也称为“物理滚动”,基于项目的滚动也称为“逻辑滚动”。

虚拟化需要基于项目的滚动,因此它可以跟踪目前正在查看的逻辑单元(项目)......将ScrollViewer设置为基于像素的滚动不再是逻辑单元的概念,而只是像素! !

5

UI Virtualization

经常有人问我,如果有一种方法可以解决此限制。那么,任何事情都是可能的,但是没有简易解决方法。您将不得不重新实现当前虚拟化逻辑的重要部分,以将基于像素的滚动与UI虚拟化结合起来。你也必须解决一些有趣的问题。例如,当物品容器具有不同的高度时,如何计算拇指的大小? (请记住,您不知道虚拟化容器的高度 - 您只知道当前显示的容器的高度。)您可以根据您知道的高度来设定平均值,或者您可以使用项目高度作为项目被带入内存(这将增加拇指大小的准确性,因为用户与控件交互)。您也可以决定基于像素的滚动仅适用于高度相同的项目 - 这将简化解决方案。所以,是的,你可以想出一个解决这个限制的解决方案,但这不是微不足道的。

相关问题