您好,
我正在使用xaml和c#在一个简单的Windows 8应用程序中工作。我正在使用VS 2012模板来创建包含导航系统的页面。
我正在加载大量数据,所以我决定添加一个带ProgressRing的加载页面,并在加载数据时导航到第一个Application页面:
//loading page
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
...
await topCookerManager.GetBlogsAsync();
this.Frame.Navigate(typeof(MainPage));
...
}
它在应用程序启动时运行良好,但是当我在应用程序的第一页时,当我点击后退按钮时,我将重定向到加载页面。因此,在加载页面中我正在检查数据是否已加载,如果是,则重定向到第一页。
if (dataManager.Blogs != null && dataManager.Blogs.Count > 0)
this.Frame.Navigate(typeof(MainPage));
你能告诉我我的错误在哪里吗?或者如何实现加载页面 谢谢你的帮助。
答案 0 :(得分:15)
您不能在Navigate
方法中OnNavigatedTo
,因为之前的导航方法仍在执行。相反,您可以通过调度程序运行新的导航调用来等待它加载。
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
//your other code
//...
Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() => Frame.Navigate(typeof(MainPage)));
}
它可能是第一次在您的代码中工作的原因是因为您正在等待片刻加载博客。在这段时间内,导航方法已完成加载,因此可以再次调用。
话虽如此,考虑一下你是否真的想要一个加载页面而不仅仅是评论中提到的Xyroid的某种叠加。