为了账号安全,请及时绑定邮箱和手机立即绑定

由于列表视图导航缓慢

由于列表视图导航缓慢

C#
SMILET 2021-07-05 12:09:15
我正在制作一个 UWP 应用程序,我可以在其中导航到带有列表视图的页面。在构造函数中,我调用了一个异步函数来设置listview的itemsource。数据存储在本地,但这需要一些时间来过滤和排序列表。尽管我调用了一个异步函数,但在设置列表视图的 itemsource 之前不会发生导航。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 = …;    });}我该如何解决这个问题,以便应用程序首先导航,然后过滤/排序/填充列表视图?
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

您在 的构造函数中添加了额外的逻辑FriendsPage,这是代价高昂的,因为它会延迟页面的视觉呈现,即使此类操作“将”以非阻塞方式执行。


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


protected override void OnNavigatedTo(NavigationEventArgs e)

{

      // Refresh List Views

}

在同一篇文章中,您可以检查您可能希望使用该Loaded事件的情况。


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


private async Task RefreshListViews()

{

   // Do stuff 

}

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


查看完整回答
反对 回复 2021-07-18
  • 1 回答
  • 0 关注
  • 144 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信