【问题标题】:Page.OnNavigatedTo doesn't get called in Windows Store appPage.OnNavigatedTo 不会在 Windows 应用商店应用程序中被调用
【发布时间】:2012-11-30 21:49:17
【问题描述】:

我有一个 Windows 应用商店乱七八糟的应用程序。我添加了一个 Basic Page,它添加了 Common 类,例如 LayoutAwarePage。

但 Page.OnNavigatedTo 在应用启动时不会被调用。 MSDN 文档说:

当页面加载并成为当前源时调用 父框架

在发布期间发生。我在没有调用 LoadState 时发现了这一点。

Rick Barraza 在他的演示中使用了由 OnNavigatedTo 调用的 LoadState:

http://channel9.msdn.com/Series/Migrating-apps-from-Windows-Phone-to-Windows-8/Binding-the-Interface-in-Windows-Store-apps#time=2m50s

我知道有些东西坏了,因为现在我添加了一些导航按钮,调用了 OnNavigatedFrom 但由于 _pageKey 为空,因为它不是由 OnNavigatedTo 设置的。

我其实很卡。这是 Microsoft 原生 Page 类的失败,但显然我是唯一遇到此问题且 100% 可发现的人。奇怪。

更新 1

我添加了一个新的 Grid App 项目,并且可以正常工作。 Common 的东西都是标准的,但它确实不同于将基本页面添加到空应用程序时编写的 Common 的东西。

我将尝试从一个新的空应用程序中重现此内容。

更新 2

好吧,我放弃了。一个新的空白应用程序并添加一个新的空白页就可以了。我将复制并粘贴我的页面并假装它从未发生过。

【问题讨论】:

    标签: windows-8 winrt-xaml


    【解决方案1】:

    我遇到了同样的问题,这是由于在我添加的基本页面中存在对 OnNavigateTo 的空覆盖。

    public sealed partial class MvvmView1
        {
            public MvvmView1()
            {
                this.InitializeComponent();
            }
    
            /// <summary>
            /// Invoked when this page is about to be displayed in a Frame.
            /// </summary>
            /// <param name="e">Event data that describes how this page was reached.  The Parameter
            /// property is typically used to configure the page.</param>
            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
            }
        }
    

    【讨论】:

    • 不知道这是不是我的原因,但有用的答案 +1
    【解决方案2】:

    为了调用 OnNavigatedTo,您的 Frame 必须调用其 Navigate 方法。

    Frame localFrame = this.MyFrame; //this assumes MyFrame is Frame that exists in xaml and has a name 
    
    localFrame.Navigate(new myPage());
    

    如果你使用的是内容注入

    localFrame.Content  = new myPage();
    

    myPage 的 OnNavigatedTo 事件不会触发,因为页面只是加载,而不是导航到。

    【讨论】:

    • 知道有用,但这是一个标准的模板化应用程序,所以我在 App.xaml.cs 中有 'if (!rootFrame.Navigate(typeof(BasicPage1), args.Arguments))'有效 - 但 OnNavigatedTo 没有被调用。可惜我没有差异工具,因为我现在有两个“相同”的项目,一个有效,一个无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-31
    • 2016-07-18
    • 1970-01-01
    • 2014-12-16
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多