Page.OnNavigatedTo不会在Windows应用商店应用中调用

时间:2012-11-30 21:49:17

标签: windows-8 winrt-xaml

我的应用程序周围有一个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设置。

我其实很困惑。这是微软本土页面课程的失败,但显然我是唯一有这个问题并且100%可被发现的人。奇

更新1

我添加了一个新的Grid App项目,并且可行。常见的东西都是标准的,但它与将基本页面添加到空应用程序时所写的常用内容不同。

我会尝试从一个新的空应用程序重新编写它。

更新2

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

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,这是由于我添加的基本页面中存在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 :(得分:1)

为了让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事件不会触发,因为页面只是加载,而不是导航到。