在XAML框架导航返回false(Frame navigation in xaml return f

2019-08-18 12:46发布

你好,
我在使用XAML和C#一个简单的Windows 8应用程序的工作。 我使用VS 2012的模板来创建页面,与导航系统包括在内。

我加载了大量的数据,所以我决定将数据加载完成了ProgressRing添加加载网页并浏览到第一个应用程序页面:

//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));

**That's the problem**: I' can't navigate from this point. The Navigate method return false ! I've tested *GoFormard* method, it throw no exception but navigation is not done and I'm staying on the loading page...

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

Answer 1:

您无法Navigate来自内部OnNavigatedTo作为一个导航方法,在这一点上仍在执行方法。 相反,你可以等待它运行通过调度新的导航调用加载。

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

为什么它可能工作在你的代码中的第一次的原因是因为你在等待了几分钟的博客加载。 在这段时间内,导航方法加载完成,所以它可以再次调用。

话虽如此,考虑,如果你真的想要一个载入页面,而不仅仅是某种覆盖作为Xyroid在评论中提到。



文章来源: Frame navigation in xaml return false