RootVisual имеет значение null при возврате из Tombstoneing?

Привет, я только что узнал, что мое приложение дает сбой при возвращении из захоронения. Я смог решить проблему здесь, внутри конструктора моей страницы:

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

Каждый раз, когда приложение повторно активируется, RootVisual устанавливает для кадра значение null. Мне интересно, есть ли здесь проблема с кастингом, потому что до того, как я использовал этот код, мое надгробие работало отлично, и я мог свободно перемещаться по приложению. Любые идеи о том, что может быть причиной этого? Или, может быть, обходной путь?


person Edward    schedule 10.01.2012    source источник


Ответы (1)


Вы должны переместить этот код из конструктора страницы в переопределение метода OnNavigatedTo на своей странице. Причина в том, что RootVisual, вероятно, установлен в обработчике событий RootFrame.Navigated, который генерируется после создания страницы, а не до (это зависит от реализации в вашем App.xaml.cs).

Конечно, поскольку метод OnNavigatedTo может запускаться более одного раза для страницы, вы должны убедиться, что обработчик события PageTransitionCompleted не назначается два раза (просто используйте -= перед +=).

Другой вариант — перенести этот код на App.xaml.cs. Для меня это имеет смысл, потому что это событие PageTransitionCompleted связано со всем приложением, а не с отдельной страницей.

person Pol    schedule 10.01.2012