网上能找到很多关于集合虚拟化的实现操作,但是貌似我看到的好多都是只能比较僵硬地滚动的,不能比较平滑滚动,列表里面的项只是内容被替换,每个项的位置没有根据你滚动而改变位置,这就感觉比较难受,我在网上经过多次深度的捣鼓,发现了一些操作,需要设置的属性包括以下:

        <Setter Property="ScrollViewer.CanContentScroll" Value="True" />
        <Setter Property="ScrollViewer.PanningMode" Value="Both" />
        <Setter Property="VirtualizingPanel.VirtualizationMode" Value="Recycling" />
        <Setter Property="VirtualizingPanel.IsVirtualizing" Value="True" />
        <Setter Property="VirtualizingPanel.ScrollUnit" Value="Pixel" />

重点其实在于一个属性: <Setter Property="VirtualizingPanel.ScrollUnit" Value="Pixel" /> ,这个除Pixel之外还有名为Item的选项:

 

对了忘了说这个属性直译过来叫滚动单元,如果设置为Item的话,那么应用虚拟化之后滚动状态就会不改变Item的位置只改变Item的内容那样改变,就像这样:

 

 

 设置成Pixel就会好很多:

 

 

 

另外你还可以去HC获取带有滚动平滑动画的ScrollViewer,然后你将获得更舒服的滚动体验,就像酱紫: