自动导航到下一页在Windows商店应用程序失败
本文关键字:Windows 应用程序 失败 一页 导航 | 更新日期: 2023-09-27 18:13:58
我有一个页面X在Windows商店应用程序(Windows 8.1)得到闪屏后显示。我想在页面加载期间/之后,在用户可以与页面交互之前对某些内容进行评估。
根据求值的不同,我想执行以下两个中的一个:
- 只显示X页给用户,当用户点击按钮时导航到Y页
- 跳过当前页面并自动导航到页Y
1工作正常
2没有。我试着在构造函数中调用this. frame . navigate (typeof(Y)),由于这个原因,它不起作用。帧仍然为空。然后我试着在LoadState和OnNavigatedTo中调用它,但是在这两种情况下。Frame不为空,则Navigate()方法返回false,这意味着导航失败。我试着在调试中进入该方法,但它不起作用(?)。
一个提示是,当自动调用Navigate()代码行时遇到断点时,屏幕仍然显示闪屏,因此看起来UI元素还没有加载。所以最后的问题是:我如何在加载所有元素的情况下进行计算和自动导航(或者只是为了它能工作)?
我不明白为什么你会在OnNavigatedFrom
中调用Frame.Navigate(...)
,但我可以建议两个适合我的选项:
-
导航到
OnNavigatedTo
中的第二页:虽然这不能开箱工作,但它在指示调度员进行导航时可以做到:public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { this.Frame.Navigate(typeof(SecondPage)); }); } }
-
一个更简单的解决方案是在第一页的
Loaded
事件中进行导航:public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); this.Loaded += (sender, args) => { this.Frame.Navigate(typeof(SecondPage)); }; } }
当然,在这两种情况下,您都可以在调用Frame.Navigate(...)
编辑:作为第三种选择,也许你应该考虑将计算和决策部分移动到App.xaml.cs中的OnLaunched
,并加载第一页或第二页作为根页,而不是打开第一页并立即导航到第二页?