2012-01-10 87 views
2

嗨,我刚刚发现从墓碑归来时我的应用程序崩溃。我能够在这里我的目标页面的构造函数中的问题:从墓碑归来时RootVisual为null?

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

每次应用程序被重新激活的RootVisual被设置了框为空。我想知道这里是否存在铸造问题,因为在使用此代码之前,我的墓碑工作正常,我能够在整个应用程序中自由导航。任何想法可能会造成这种情况?或者,也许是一个工作?

回答

4

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

当然是因为OnNavigatedTo方法可以对页面拼命地跑更是一次,你应该确保PageTransitionCompleted事件处理程序未分配两次(+=之前只使用-=)。

另一种选择是将此代码移动到App.xaml.cs。这对我来说最为合理,因为PageTransitionCompleted事件与整个应用程序相关,而不是单个页面。