xaml中的帧导航返回false

你好,
我正在使用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));

**这就是问题**:我无法从这一点开始导航。 Navigate方法返回false! 我已经测试了* GoFormard *方法,它没有exception,但导航没有完成,我将继续加载页面…

你能告诉我我的错误在哪里吗? 或者如何实现加载页面。
谢谢你的帮助。

您无法从OnNavigatedTo方法中导航,因为此时导航方法仍在执行。 相反,您可以通过调度程序运行新的导航调用来等待它加载。

 protected async override void OnNavigatedTo(NavigationEventArgs e) { //your other code //... Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Frame.Navigate(typeof(MainPage))); } 

它可能是第一次在您的代码中工作的原因是因为您正在等待片刻加载博客。 在这段时间内,导航方法已完成加载,因此可以再次调用。

话虽如此,考虑一下你是否真的想要一个加载页面,而不仅仅是评论中提到的Xyroid的某种叠加层。