windows phone几种页面事件的执行顺序及区别
<div id="cnblogs_post_body">事件触发顺序先后是进入页面:OnNavigatedTo(控件还没有被加载) -> Loaded (控件已经加载完毕)
离开页面:OnNavigatingFrom(页面控件还存在) -> OnNavigatedFrom(页面控件还存在)
->Unloaded(执行完毕后进入第二个页面)
(1)OnNavigatedTo方法:当页面变为框架中的活动页面时调用。
一般重写OnNavigatedTo事件用来检查导航请求以及准备要显示的页面。比如准备相关的请求加载的数据,一般是使用OnNavigatedTo方法,而不是使用Loaded事件处理函数。最好使用 OnNavigatedTo 方法,因为只在每次页面成为活动页面时调用该方法一次。Silverlight 框架在每次将元素添加到可视化树时引发 Loaded 事件,在激活某一页面时该事件可能会多次发生。
对于每个请求都调用 OnNavigatedTo 方法,甚至在从缓存检索该页面时也是如此。我们应该在此方法中包括为每个请求必须执行的代码,而不是把必须执行的代码放在页面构造函数中。
(2)Loaded事件:当已构造 FrameworkElement 并将其添加到对象树中时发生,主要是页面被加载后触发这个事件。大部分控件都有这个事件,在控件被加载后触发事件。此事件不路由(而许多 Silverlight 输入事件都路由)。注意,子控件先Loaded,然后是父控件Loaded。
(3)OnNavigatingFrom:刚好在页面不再是框架中的活动页面之前调用。
如果需要页面变成非活动状态前执行操作时可以重写OnNavigatingFrom 方法。比如保存当前页面的数据等。
(4)OnNavigatedFrom:当页面不再是框架中的活动页面时调用。
如果在页面变成非活动状态时我们需要执行最后的操作,那我们可以重载OnNavigatedFrom操作。比如:更新页面相关的数据等。
(5)Unloaded:当此对象不再与主对象树连接时发生。
和Loaded事件类似, Unloaded 不是 Silverlight 中的路由事件。如果 Silverlight 应用程序由于任何原因关闭,任何对象不会引发 Unloaded事件。与Loaded事件相反,这里父控件先Unloaded,然后是子控件Unloaded。
注意:被设置为Visibility.Collapsed的Visibility不等价于正从对象树中被卸载,并且不引发对象上的Unloaded。同样,更改Popup的打开状态不会在Popup或任何其子元素上引发Unloaded。
页:
[1]