嗨,我刚刚发现我的应用程序从逻辑删除返回时崩溃了。我可以在页面的构造函数中针对此问题:

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


每次重新激活应用程序时,RootVisual都会将框架设置为null。我想知道这里是否存在强制转换问题,因为在使用此代码之前,我的墓碑运行正常,并且能够在整个应用程序中自由导航。关于什么可能导致此的任何想法?还是可以解决?

最佳答案

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

当然,由于OnNavigatedTo方法可能在一个页面上运行的次数超过一次,因此您应确保PageTransitionCompleted事件处理程序没有分配两次(只需在-=之前使用+=)。

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

关于c# - 从Tombstoning返回时RootVisual是否为null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8811087/

10-11 12:37