2

こんにちは、廃棄から戻ったときにアプリケーションがクラッシュしていることに気付きました。ここで、ページのコンストラクター内で問題をターゲットにすることができました。

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

アプリが再アクティブ化されるたびに、RootVisual はフレームを null に設定しています。このコードを使用する前は、トゥームストーンが完全に機能し、アプリ全体を自由にナビゲートできたため、ここにキャストの問題があるかどうか疑問に思っています。これを引き起こしている可能性のあるアイデアはありますか?それとも回避策ですか?

4

1 に答える 1

4

このコードをページコンストラクターからページOnNavigatedToのメソッドオーバーライドに移動する必要があります。理由はRootVisualおそらくRootFrame.Navigated、ページが構築される前ではなく、構築された後に生成されるイベントハンドラーに設定されているためです(これは、の実装によって異なりますApp.xaml.cs)。

もちろん、OnNavigatedToメソッドは1ページに対して複数回実行される可能性があるため、PageTransitionCompletedイベントハンドラーが2回割り当てられていないことを確認する必要があります(-=前に使用するだけ+=です)。

別のオプションは、このコードをに移動することApp.xaml.csです。PageTransitionCompletedそのイベントは単一のページではなくアプリ全体に関連しているため、これは私にとって最も理にかなっています。

于 2012-01-10T22:30:03.073 に答える