c# - 通用 Windows 应用程序导航

标签 c# win-universal-app

我觉得我在这里真的很愚蠢......我刚刚花了两个小时在谷歌上搜索应该是一个简单的问题,但我似乎无法让它发挥作用。我想做的就是以下几点:

我在 Visual Studio 中创建了一个通用应用程序项目,并在项目解决方案下创建了一个名为“Pages”的文件夹,在其中创建了两个空白页面。我想要的只是主页直接导航到 Page1。回到 Windows Phone 8.1 时代,我会使用 NavigationServices 并向其传递一个 Uri。现在看来我必须使用类似的东西:

this.Frame.Navigate(typeof(Page1));

这根本不起作用 - 尝试删除文件夹结构并导航到另一个空白页面,但似乎“Page1”无法识别。我做错了什么?

很明显我没有很好地描述这个问题。这是我的应用程序结构:

enter image description here

在 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/

相关文章:

c# - 如何以编程方式区分 epub 固定布局和可重排布局

powershell - 在 windows 10 中从 powershell 启动通用 windows 应用程序 (UWA)

c# - 启动时运行后台任务

java - 如何使用 k() 函数在 kdb/q 中接收数据

C#:封装例如集合

c# - 使用Try-Catch-Finally处理算术异常

windows - UWP 在图像上放置文本 block

C# Windows 通用 ListView 将按钮绑定(bind)到图标失败

javascript - UWP JS : How to get Culture info

c# - 未提供有效的 KnowledgeBaseId 和 SubscriptionKey