0

私は Windows 8 の Metro 読み取りアプリを設計していますが、開始直後にナビゲーション イベントの問題が発生しました。問題を簡単にするために、説明は次のとおりです。

MainPage.xaml と DetailPage.xaml の 2 つのページがあります。MainPage.xaml にはリストビューが含まれており、アイテムは記事オブジェクト (これらの記事アイテムは Web からダウンロードされます) であり、アイテムがクリックされます。フレームは使用します

void ItemView_ItemClick(object sender, ItemClickEventArgs e)
        {
            // Navigate to the appropriate destination page, configuring the new page
            // by passing required information as a navigation parameter
            this.Frame.Navigate(typeof(DetailPage), e.ClickedItem);
        }

記事全体を読んだ後、ユーザーは次のように定義されている「戻る」ボタンをクリックします。

<Button x:Name="backButton" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource BackButtonStyle}"/>

次に問題が発生します。Frame が MainPage に戻っただけであると想定されますが、ナビゲーションの後、MainPage の DataContext が失われ、MainPage の構築関数が再度呼び出され、Web リソースがフェッチされます。

Windows Phone 開発者として、私はこの問題について混乱しています。誰か助けてくれませんか。

前もって感謝します。

4

2 に答える 2

2

WinRT/XAML のPage.NavigationCacheModeで指定された既定の動作は、Windows Phone の PhoneApplicationPage とは異なります。デフォルトはNavigationCacheMode .Disabled ですが、NavigationCacheMode.Enabled または .Required は、期待どおりに機能させるためにおそらく使用したいものです。

于 2012-05-18T17:22:23.337 に答える
1

この問題についてここでブログを書いたので、お役に立てば幸いです。

NavigationCacheMode を有効にした後でも、Windows Phone と比較すると異なる点が 1 つあります。キャッシュは、戻るときと進むときに使用されます。Windows Phone では、先に進むと常に新しいインスタンスが作成されます。

Windows 8 アプリで NavigationCacheMode を有効にした後、メモリ使用量に問題が発生したため、追跡する必要があります。

于 2012-06-20T08:26:04.070 に答える