我正在制作一个 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
}
并等待它在导航事件上的执行!
- 1 回答
- 0 关注
- 144 浏览
添加回答
举报
0/150
提交
取消