我有两页; MainPage
和SettingsPage
。
在MainPage中,在OnNavigatedTo
方法中,我检查了一些独立的存储空间,如果它不匹配,我希望应用程序导航到SettingsPage
。
OnNavigatedTo
标记为async
,因为我正在使用等待的方法来检查变量。有效的是它读取变量并报告它需要导航,所以我调用
this.Frame.Navigate(typeof(SettingsPage));
没有抛出任何错误。但是70%++的时间我称之为Navigate方法它什么也没做!在不同于Windows Phone的页面之间导航的方式是什么?我在那里做了完全相同的事情,但使用的是网址而不是typeof(XXXPage)
是什么给出的?它似乎不遵循async
标志,因为它有时会设法导航到SettingsPage ...但是70%以上的时间似乎应用程序忽略async OnNavigatedTo
并运行应用程序同步。
我在导航事件上放置了一个Debug.WriteLine,每次调用Navigate(typeof(SettingsPage))
......但似乎在某个地方失败了?
答案 0 :(得分:1)
我遇到过同样的行为。以低优先级对新导航进行排队,使第一页加载和应用初始化有机会完全完成。
public async virtual Task NavigateAsync(Type sourcePageType)
{
await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () =>
{
((Frame)Window.Current.Content).Navigate(sourcePageType);
});
}