c# - Windows 8.1 应用程序中的 FlipView 渲染问题

标签 c# wpf windows-runtime flipview

我正在创建 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/

相关文章:

wpf - WPF 数据绑定(bind)是否让事情变得比它的值(value)更痛苦?

c# - 在 XAML 中设置 WPF OxyPlot PlotViews 的样式

windows-runtime - Windows Phone 8.1 中图像上的 OpacityMask

C# TCP Socket "Blocking"属性不一致

c# - WPF 颜色选择器 - 添加新的自定义颜色

c# - F# 类型到 Json 正在输出 Name@ 和 Name

c++ - 如何在 C++ WinRT 中执行 SHA512 哈希?

c# - 如何将对象从 C# webapp 发送到 asp.net webapi

c# - 使用 Coredll.dll 检索商店信息

c# - 捕获和抛出异常;为什么这被认为是反模式