1

私は WP7 アプリを構築していますが、現在、その廃棄部分を処理しています。

私がやっていることは、NavigatedFrom イベントが発生したときにページのビューモデルを Page.State バッグに保存し、それを NavigatedTo に読み戻すことです (バッグから読み取るか、実際のライブ データから読み取るかを検出するためのチェックを行います)。アプリケーションの)。

まず、私の VM はドメイン モデルの単なるラッパーでした

public string Nome
    {
        get
        {
            return _dm.Nome;
        }
        set
        {
            if (value != _dm.Nome)
            {
                _dm.Nome= value;
                NotifyPropertyChanged("Nome");
            }
        }
    }

しかし、バッグに保存してから読み返すと、ドメイン モデルが正しく逆シリアル化されなかったため、これが常に機能するとは限りませんでした。

次に、VM の実装を、DM から必要なプロパティの単なるコピーに変更しました。

public string Nome
    {
        get
        {
            return _nome;
        }
        set
        {
            if (value !=nome)
            {
                _nome= value;
                NotifyPropertyChanged("Nome");
            }
        }
    }

そして、次のことを行うコンストラクターを使用します。

_nome = dm.Nome;

そして今ではうまくいきますが、これが正しいアプローチであるかどうかはわかりませんでした.

Thx シモーネ

4

3 に答える 3

2

一時的な状態の情報は、Application.Deactivated イベントで永続化してから、廃棄をサポートするために Application.Activated イベントで復元する必要があります。

アプリケーション セッション間で何かを保存する必要がある場合は、Application.Closing イベントを使用できますが、保存する必要があるものによっては、変化するたびに保存することもできます。繰り返しますが、保存する必要があるものに応じて、Application.Launching イベントで復元するか、必要なときに読み取るだけです。

採用するアプローチは、アプリケーションの要件に完全に依存し、データを保存する方法と場所もユーザー次第です (分離ストレージへのバイナリ シリアル化が一般的に受け入れられており、最速です)。

あなたのアプリケーションの詳細はわかりませんが、廃棄のサポートを実装しようとしている場合、NavigatedFrom/NavigatedTo でのデータの保存と復元は適切な場所ではないでしょう。

于 2011-01-07T11:36:41.803 に答える
1

モデルの一部のコピーを作成しないことをお勧めします。廃棄を処理するときに、(おそらく) 完全な (アプリ レベルの) モデルとページ レベルのコピーの両方を永続化する必要があるためです。

繰り返しますが、最も適切なソリューションは、アプリケーションの複雑さと使用するモデルによって異なります。

于 2011-01-07T11:56:22.853 に答える
1

Application.Activated/Deactivated は、廃棄を処理するのに適した場所です。

ここで、OnNavigatedTo/From がニーズに合わない理由を確認してください。

アプリケーションの非アクティブ化と再アクティブ化を正しく処理する方法 - Peter Torr のブログ

Windows Phone の実行モデルの概要

于 2011-01-08T03:43:43.887 に答える