【问题标题】:FlipView rendering problems in windows 8.1 applicationWindows 8.1 应用程序中的 FlipView 渲染问题
【发布时间】:2014-10-07 00:00:23
【问题描述】:

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

【问题讨论】:

    标签: c# wpf windows-runtime flipview


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回复。你认为它是由图像加载引起的吗?因为看起来当我转到另一个页面时,图像已经加载。看起来 WPF 在页面之间滑动时呈现页面存在问题。另一点是我在一页上有24张图片。请问您的 ImageExtensions 库是否也适合我的情况?
    • 如果你能展示你加载图像的方式那就太好了,这样我就可以告诉你更好的帮助。看起来您的所有图像都是在页面初始化时加载的(性能低下)。顺便提一句。你使用 WPF 还是 WinRT?
    • 我只在服务器上设置图片url路径。这是我如何显示图像 gist.github.com/cechovsky/aadcf97f9f445742608a 的代码。但在我看来,图片的加载效果很好。我只有在页面之间滑动时遇到问题。图片已经加载,但滑动不流畅。非常感谢
    • 这很奇怪 - 这不应该对性能产生很大影响,你在页面加载(导航)上还做了什么?
    猜你喜欢
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 1970-01-01
    相关资源
    最近更新 更多