【问题标题】:Why does the Basic Page not supply an OnNavigatedTo() event?为什么基本页面不提供 OnNavigatedTo() 事件?
【发布时间】:2013-01-24 13:56:16
【问题描述】:

试图确定为什么我的应用程序(基于“空白应用程序”模板进入这个勇敢的新世界)没有像我预期的那样工作 (http://stackoverflow.com/questions/14467756/why- will-my-event-handler-not-get-call),我开始了一个新的空白项目,然后删除了 MainPage 并添加了一个新的基本(非空白)页面,我将其命名为 MainPage 以纪念已故的页面(以及向传统和懒惰致敬 - 所以我不必更改导航到该页面的 app.xaml.cs 中的代码。

Blank 应用程序像这样创建了原始 MainPage.xaml.cs(自动生成的注释被省略):

namespace AsYouWish
{
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }
    }
}

...我用 BasicPage(不是 BlankPage)替换了它,它生成了这个:

namespace AsYouWish
{
    public sealed partial class MainPage : AsYouWish.Common.LayoutAwarePage
    {
        public MainPage()
        {
            this.InitializeComponent();
        }

        protected override void LoadState(Object navigationParameter, Dictionary<String, Object> pageState)
        {
        }

        protected override void SaveState(Dictionary<String, Object> pageState)
        {
        }
    }

所以基本页面得到LoadState() 和SaveState(),而空白页面的MainPage 有OnNavigatedTo()。为什么基本页面没有 OnNavigatedTo() 事件?似乎每个页面都有可能被导航到(和从,但我认为该事件更有可能是可选/不必要的)。

【问题讨论】:

    标签: c# visual-studio-2012 windows-store-apps


    【解决方案1】:

    这只是正在使用的页面模板的问题。 OnNavigatedTo 虚拟方法在 Page 类中实现,因此它可以在任何直接或间接继承自它的类中被覆盖。唯一的区别是用于MainPage.xaml.cs 的模板已经有一个空的OnNavigatedTo 方法,而BasicPage 模板没有。

    没有什么可以阻止您通过添加以下代码来覆盖该方法:

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
    
        // add you own code here
    }
    

    只要确保保持base.OnNavigatedTo(e) 调用,否则您将失去在LayoutAwarePage 中已实现的功能(启用LoadState/SaveState)。

    如果您不知道,在 Visual Studio 中向您的类添加覆盖非常容易。只需输入override 并按空格键,就会打开一个下拉列表,其中包含您可以在类中覆盖的所有方法。一旦你选择了其中一个,完整的空方法将被添加到你的类中,就像我在上面的答案中包含的那样。

    【讨论】:

      猜你喜欢
      • 2010-11-03
      • 2015-11-05
      • 2011-02-23
      • 2013-10-25
      • 2023-02-13
      • 1970-01-01
      • 2013-11-20
      • 2013-06-23
      • 1970-01-01
      相关资源
      最近更新 更多