4

私は Windows Phone 7.5 Unleashed を読んでいますが、次のようなコードがたくさんあります (ページのコード ビハインド)。

bool loaded;

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    if (!loaded)
    {
        DataContext = new SomePageViewModel(State);
        loaded = true;
    }

    ((SomePageViewModel)DataContext).LoadTransientState();

    ...
}

...

廃棄された状態から再開すると false になるという考え方なloadedので、ビュー モデルを再構築する必要があることがわかります。

私の質問は:ifブロックの外側に一時的な状態をロードするのはなぜですか? メモリが破棄されていない場合 (つまり、アプリケーションが廃棄されていない場合)、状態をリロードせずに古いビュー モデルを使い続けることはできないのでしょうか?

ページがナビゲートされるとき、または廃棄状態から再開するときだけ、一時的な状態を常にロードする必要がありますか?

4

1 に答える 1

1

私はこの本に詳しくありません。あなたが示したコードから、これが正しいかどうかを判断するのは困難です。それはLoadTransientState実際に何をするかに帰着します。

廃棄処理を処理するために必要なアプローチは、(アプリケーション内で意味がある限り*) ユーザーがアプリ/ページを離れたときと同じ状態に戻ることです。

LoadTransientStateそのため、廃棄中の情報の持続性のみに関心がある場合は、それをifブロック内に移動することが適切な場合があります。
他の形式の一時データを扱う場合は、おそらくそうではありません。

LoadTransientState内部で既に存在する (または設定されている) データを設定 (またはリセット) しないようにするためのロジックが含まれていることを願っています。

*いくつかの明らかな例外は、ライブ データ、タイマー (おそらく)、リアルタイム情報などです。

于 2012-05-09T08:21:15.627 に答える