当覆盖页面中的OnNavigatedTo方法时,它们会将以下代码行放入其中:

base.OnNavigatedTo(e);

我一直在删除它,还没有注意到任何奇怪的行为。这行代码是做什么用的?我们应该离开它吗?还是像占位符?

我很确定这不是方法本身特有的,因为我在不同的地方都看到过这一点。我的猜测是,这会从我们所继承的类(在本例中为Page)中的中调用默认的OnNavigatedTo方法。但是,它的存在并没有真正意义,因为如果我们想要为什么首先要覆盖它?有人可以解释这是如何工作的吗?

最佳答案

它不像Android那样挑剔(与SuperNotCalledException一起崩溃)。但这是一个保留用例:

  public class BasePage : PhoneApplicationPage
    {
       protected override OnNavigatedTo(....)
    {
        //some logic that should happen on all your pages (logging to console, etc.)
    }
    }

    public class DetailsPage : BasePage
    {
      protected override OnNavigatedTo(....)
    {
    base.OnNavigatedTo(); //the basepage logging, etc.
        //custom page logic (setup VM, querystring parameters, etc.)
    }

}

一般来说,我会称之为。如果PhoneApplicationPage的实现发生了变化,并且其中的Virtual函数具有更多功能,那么您就不想错过;)

09-26 15:47