エミュレーターの一部のインスタンスで、ハードウェアの戻るボタンをクリックすると、コンストラクターが呼び出された状態でバックページが読み込まれ、コンストラクターが呼び出されないという問題が発生しました。これはなぜですか? これはエミュレーターだからですか?
1 に答える
0
ナビゲーションはどのように行っていますか?アニメーションを実行するために最初の OnNavigatingFrom をキャンセルし、アニメーションの完了後に再びナビゲーションの開始を聞いていますか?
protected override void OnNavigatingFrom(System.Windows.Navigation.NavigatingCancelEventArgs e)
{
if (_pendingNavigation == null)
{
VisualStateManager.GoToState(this, "LeavingPage", true);
_pendingNavigation = e.Uri;
e.Cancel = true;
}
base.OnNavigatingFrom(e);
}
void LeavingPage_Completed(object sender, EventArgs e)
{
var uri = _pendingNavigation;
NavigationService.Navigate(uri);
_pendingNavigation = null;
}
このバグは、NavigationService.Navigate() を呼び出したときに発生し、新しいページ インスタンスがナビゲーション スタックに追加されます。このバグを修正するには、最初のページ ナビゲーションが「新規」ナビゲーションであることを確認する必要があります。そのようなもの:
if (e.NavigationMode == NavigationMode.New && _pendingNavigation == null)
{
VisualStateManager.GoToState(this, "LeavingPage", true);
_pendingNavigation = e.Uri;
e.Cancel = true;
}
于 2012-10-01T18:22:22.743 に答える