首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >由于列表视图,导航速度很慢

由于列表视图,导航速度很慢
EN

Stack Overflow用户
提问于 2018-06-02 00:50:22
回答 1查看 268关注 0票数 1

我正在制作一个UWP应用程序,其中我导航到一个具有列表视图的页面。在构造函数中,我调用一个异步函数来设置listview的itemsource。数据存储在本地,但这需要一些时间来对列表进行筛选和排序。尽管我调用了一个异步函数,但是只有在设置了listview的itemsource之后,导航才会发生。

代码语言:javascript
复制
public FriendsPage()
{
    this.InitializeComponent();
    RefreshListViews();
}
//I tried both these versions: in the first one, 
//the app clearly takes one extra second to navigate to the page.
private async void RefreshListViews(){
    await Task.Delay(1000);
    Listview.ItemsSource = …;
}

private async void RefreshListViews(){
    await Dispatcher.RunAsyn(Windows.UI.Core.CoreDispatcherPriority.Normal,() => {
        Listview.ItemsSource = …;
    });
}

我如何解决这个问题,让应用程序首先导航,然后过滤/排序/填充列表视图?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-02 05:37:33

您在FriendsPage的构造函数中添加了额外的逻辑,这是非常昂贵的,因为它延迟了页面的可视化呈现,即使这样的操作“将”以非阻塞的方式执行。

解决方案?将运行此代码的责任交给内置在Page类中的事件,该事件负责处理导航到该类上的操作。该事件为OnNavigatedTo,并在Frame锁定FriendsPage具有其当前页面时调用。

代码语言:javascript
复制
protected override void OnNavigatedTo(NavigationEventArgs e)
{
      // Refresh List Views
}

在同一篇文章中,您可以查看可能需要使用Loaded事件的情况。

我还建议不要创建一个即发即忘的异步方法,而是更改异步操作的签名,而不是返回一个可等待的o:

代码语言:javascript
复制
private async Task RefreshListViews()
{
   // Do stuff 
}

并等待它在导航事件上的执行!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50647912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档