由于列表视图导航缓慢

我正在制作一个 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 = …;

    });

}

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


SMILET
浏览 145回答 1
1回答

当年话下

您在 的构造函数中添加了额外的逻辑FriendsPage,这是代价高昂的,因为它会延迟页面的视觉呈现,即使此类操作“将”以非阻塞方式执行。解决方案?处理运行此代码到Page类中内置的事件的责任,并处理到它的导航。该事件是OnNavigatedTo,并在Frame锁定FriendsPage具有其当前页面时调用。protected override void OnNavigatedTo(NavigationEventArgs e){      // Refresh List Views}在同一篇文章中,您可以检查您可能希望使用该Loaded事件的情况。我还建议不要创建一个即发即弃的异步方法,而是更改异步操作的签名以返回一个可等待的 o:private async Task RefreshListViews(){   // Do stuff }并等待它在导航事件上的执行!
打开App,查看更多内容
随时随地看视频慕课网APP