从Tombstoning返回时RootVisual为null?

时间:2012-01-10 21:55:32

标签: c# windows-phone-7 rad-controls tombstoning

您好我刚刚发现我的应用程序在从墓碑中返回时崩溃了。我能够在我的页面的构造函数中找到问题:

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

每次应用重新激活时,RootVisual都会将帧设置为空。我想知道这里是否存在投射问题,因为在我使用此代码之前,我的墓碑工作完美无缺,我能够在整个应用程序中自由导航。关于可能导致这种情况的任何想法?或者可以解决一下?

1 个答案:

答案 0 :(得分:4)

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

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

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