我正在创建Windows商店应用程序(目标8.1,WPF和C#),我正在使用FlipView控件在页面之间导航,其中包含一些文章缩略图的24张图片。当我的页数很少时,一切都变得非常流畅和美观。但是对于更多页面的情况,有时它会滞后,对用户来说不太舒服。
我的FlipView声明中有一部分:
<FlipView Name="FlipView" ItemsSource="{Binding ArticlesPages}"
VirtualizingStackPanel.VirtualizationMode="Recycling"
SelectedIndex="{Binding SelectedPageIndex, Mode=TwoWay}">
应该提高性能和渲染速度的一点是 VirtualizingStackPanel.VirtualizationMode ,但在我看来它的行为相似。
您是否知道如何提升FlipView性能?我尝试在平板电脑和笔记本电脑上使用i5处理器和大量内存,但它仍然不是我想要的。
答案 0 :(得分:1)
如果您拥有的CPU /内存昂贵的部分是图像/缩略图加载,您可以查看我的FlipViewBehavior - ImageExtensions library。它还没有生产就绪状态(虽然它可以工作 - 文档几乎不存在atm。) - 但我计划很快将它合并到winrt xaml工具包中(当清理时,在〜月内)。主要思想是:异步加载,停止加载与当前项目相距太远的项目,清除内存,处理不可见的项目(在内存中保留最多三个加载的图片) - 用手写{{1在上面的链接中。我使用它在Windows手机上显示大量过滤后的图像,效果非常好。
CircularQueue
肯定会为您提供虚拟化 - 但这意味着将会有少量VirtualizationPanel
个容器(例如,如果您拥有1000个项目的FlipViewItems
,那么将会有例如~10-15 UI容器面板,如果启用了回收模式,将重复使用)。但是,如果你为ItemsSource
加载任何内存昂贵的资源 - 无论如何都会占用内存。