OnNavigatedTo vs Load事件

bal*_*dre 6 c# initialization windows-phone-7

在几个在线示例中我发现了这个:

public partial class ForecastPage : PhoneApplicationPage
{
    Forecast forecast;

    public ForecastPage()
    {
        InitializeComponent();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        // code here
    }
}
Run Code Online (Sandbox Code Playgroud)

但在其他人中我发现Load事件的使用就像

public partial class Person : PhoneApplicationPage
{
  private PersonViewModel _ViewModel;

  public Person()
  {
     InitializeComponent();
     this.Loaded += new RoutedEventHandler(SearchView_Loaded);
  }

  void SearchView_Loaded(object sender, RoutedEventArgs e)
  {
     // code here
  }
}
Run Code Online (Sandbox Code Playgroud)

我知道OnNavigatedToLoad事件发生之前会发生火灾,但是在用户手机被吸入手机之前都会触发,所以我的问题是使用另一种方法有什么优势吗?

Vit*_*nko 25

我不同意Tigran.

public View()
{
  InitializeComponent();

  personList.ItemsSource = PersonDataSource.CreateList(100);

    Loaded += (sender, args) => Debug.WriteLine("Loaded");
}

  protected override void OnNavigatedTo(NavigationEventArgs e)
  {
      Debug.WriteLine("Navigated");
  }
Run Code Online (Sandbox Code Playgroud)

在向前 - 向后跳跃时,输出是

Navigated Loaded Navigated Loaded Navigated Loaded

因此,OnNavigated在页面导航完成时,但在加载页面控件之前(期间)Loaded调用,而在页面准备就绪并且加载所有控件时调用.


Tig*_*ran 7

阅读文档OnNavigatedTo:

当页面成为框架中的活动页面时调用.

当我们阅读有关Loaded活动时,请参阅:

在构造FrameworkElement并将其添加到对象树时发生.

它们是完全不同的,因为页面,如果我错了就纠正我,active在你的应用程序的生命周期中可以变得多一次,但FrameworkElement 通常会发生一次.