2

我有一个 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 的东西都是标准的,但它确实不同于将 Basic Page 添加到空应用程序时编写的 Common 的东西。

我将尝试从一个新的空应用程序中复制它。

更新 2

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

4

2 回答 2

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)
        {
        }
    }
于 2013-04-16T16:05:08.247 回答
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 事件不会触发,因为该页面仅被加载,而不是导航到。

于 2012-12-01T14:21:01.790 回答