首页 > 解决方案 > ListView 中的 ImageEx 冻结 UIThread

问题描述

uwp-community-toolkit version2.2

我的列表视图中有几个 ImageEx 元素,它们绑定到 url。所以当我启动我的应用程序时,UI 线程似乎被 ImageEx 阻止了。在从 Internet 加载所有 ImageEx 图像之前,我无法移动应用程序窗口、调整窗口大小、滚动列表或与应用程序的另一部分交互。

我想知道这是否是正常行为?!如果有办法解决这个问题?!

我的 ListViewItem 模板:

<DataTemplate x:DataType="m:RepoModel">
   <controls:ImageEx x:Phase="3"
        IsCacheEnabled="True"
        Source="{x:Bind owner.avatar_url}"
        Height="125" Width="125"                                       
        PlaceholderSource="ms-appx:///Assets/pl.png"/>

标签: xamluwpwindows-community-toolkit

解决方案


ImageEx控件异步下载图像,同时显示加载指示器。然后将源图像存储在应用程序的本地缓存中,以保留资源和加载时间。

对于我的测试,如果启用IsCacheEnabled属性,您将无法流畅地调整窗口大小。因为有很多 I/O 操作会在图像缓存时导致 UI 冻结。

如果您想在加载图像期间流畅地调整窗口大小,您可以禁用
IsCacheEnabled属性。


推荐阅读