我觉得我在这里真的很愚蠢......我刚刚花了两个小时在谷歌上搜索应该是一个简单的问题,但我似乎无法让它发挥作用。我想做的就是以下几点:
我在 Visual Studio 中创建了一个通用应用程序项目,并在项目解决方案下创建了一个名为“Pages”的文件夹,在其中创建了两个空白页面。我想要的只是主页直接导航到 Page1。回到 Windows Phone 8.1 时代,我会使用 NavigationServices 并向其传递一个 Uri。现在看来我必须使用类似的东西:
this.Frame.Navigate(typeof(Page1));
这根本不起作用 - 尝试删除文件夹结构并导航到另一个空白页面,但似乎“Page1”无法识别。我做错了什么?
很明显我没有很好地描述这个问题。这是我的应用程序结构:
在 MainPage 中我有以下代码:
namespace TrainPuzzle
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.Frame.Navigate(typeof(Page1));
}
}
}
我已尝试使用 Pages.Page1 执行相同的代码,但出现 nullException 错误。希望这更有意义
最佳答案
您无法在构造函数中导航,原因很简单:This.Frame 仍然为空。一旦页面被框架导航到,它就被设置,而框架已经拥有了实例。
因此您可以在 Loaded 事件中导航。
但正如许多评论所述:在页面加载之前就离开页面意味着您可以事先使用不同的导航目标,这只是浪费计算资源。
此外,一旦激活 NavigationCache,第二次显示页面时就不会调用构造函数,因此您应该避免其中包含太多逻辑。
关于c# - 通用 Windows 应用程序导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34476449/