我正在创建 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 处理器和大量 RAM 的笔记本电脑上尝试过,但它仍然不是我想要的。
最佳答案
如果您拥有的 CPU/内存昂贵部分是图像/缩略图加载,您可以查看我的 FlipViewBehavior - ImageExtensions library .它还不是生产就绪状态(虽然它可以工作 - 文档几乎不存在 atm。) - 但我计划很快将它合并到 winrt xaml 工具包中(清理后,在 ~month )。主要思想是:异步加载,停止加载距离当前项目太远的项目,清理内存,处理不可见的项目(内存中最多保留三张加载图片) - 通过手写 实现上面链接中的 CircularQueue
。我用它在 Windows Phone 上显示大量经过过滤的图像,效果非常好。
VirtualizationPanel
肯定会给你虚拟化 - 但这意味着会有很少的 FlipViewItems
容器(例如,如果你有 ItemsSource
有 1000 个项目例如,将有大约 10-15 个 UI 容器面板,如果启用回收模式,这些面板将被重复使用)。但是,如果您为 ItemsSource
加载任何占用大量内存的资源 - 它无论如何都会占用内存。
关于c# - Windows 8.1 应用程序中的 FlipView 渲染问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26192461/