2

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

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

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

4

1 回答 1

4

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

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

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

于 2012-01-10T22:30:03.073 回答