2

我正在创建 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 的笔记本电脑上尝试了它,但它仍然不是我想要的。

4

1 回答 1

1

如果您拥有的 CPU/内存昂贵的部分是图像/缩略图加载,您可以查看我的 FlipViewBehavior - ImageExtensions library。它还不是生产就绪状态(尽管它可以工作 - 文档几乎不存在 atm。) - 但我计划很快将它合并到 winrt xaml 工具包中(清理后,在 ~month )。CircularQueue主要思想是:异步加载,停止加载离当前项目太远的项目,清除内存,处理不可见的项目(在内存中最多保留三张加载的图片)-通过上面链接中的手写实现. 我用它在 windows phone 上显示很多过滤后的图像,效果很好。

VirtualizationPanel当然可以为您提供虚拟化-但这意味着FlipViewItems容器将很少(例如,如果您有ItemsSource1000 个项目,则将有大约 10-15 个 UI 容器面板,如果启用了回收模式,这些面板将被重用)。但是,如果您为您加载任何内存昂贵的资源ItemsSource- 它无论如何都会占用内存。

于 2014-10-06T15:54:30.170 回答