从Tombstoning返回时RootVisual为null

本文关键字:null RootVisual Tombstoning 返回 | 更新日期: 2023-09-27 18:19:53

嗨,我刚从tombstoning返回时发现我的应用程序崩溃了。我能够在我的页面的构造函数中针对这个问题:

RadPhoneApplicationFrame frame = App.Current.RootVisual as RadPhoneApplicationFrame;
frame.PageTransitionCompleted += 
                         new EventHandler<EventArgs>(frame_PageTransitionCompleted);

每次重新激活应用程序时,RootVisual都会将框架设置为null。我想知道这里是否存在选角问题,因为在我使用此代码之前,我的墓碑工作得很好,我可以在整个应用程序中自由导航。有什么想法可能导致这种情况吗?或者也许是一个变通办法?

从Tombstoning返回时RootVisual为null

您应该将此代码从页面构造函数移动到页面中的OnNavigatedTo方法重写。原因是RootVisual可能是在RootFrame.Navigated事件处理程序中设置的,该事件处理程序是在构造页面之后而不是之前生成的(这取决于App.xaml.cs中的实现)。

当然,因为OnNavigatedTo方法可能会为一个页面运行不止一次,所以应该确保PageTransitionCompleted事件处理程序没有分配两次(只需在+=之前使用-=)。

另一个选项是将此代码移动到App.xaml.cs。这对我来说很有意义,因为PageTransitionCompleted事件和整个应用程序有关,而不是一个页面。