mvvmlight を使用した Windows 8 での状態処理の実装 WinRT で状態を管理するために mvvmligt で使用できる方法はありますか? WinRT を使用して既定の Suspensionmanager の機能を複製するにはどうすればよいですか? 2 つ目は、ナビゲーション サイクルの管理に関するものです。つまり、ページ A -> B から移動した場合、サスペンドとシャットダウンの状態に移行します。ページ B を開く必要があるアプリケーションを再起動すると、戻るキーを押しながら A をロードする必要があります。WinRT アプリケーションで MVVM ライトを使用してこれを効果的に実装するにはどうすればよいですか?
3 に答える
これらは実際には MVVM Light 機能ではありません。これらは自分で行う必要があります。
1 つのオプションは、独自のナビゲーション サービスを作成することです (こちらの例を参照してください)。ナビゲーション サービスは、サスペンション マネージャーを使用して、アプリケーションのブレッドクラム トレイルを構築/管理できます。追加のメソッドを追加した場合:
public void GoToMostRecentPage()
{//blah}
アプリの起動時にこのメソッドを呼び出して、ユーザーを適切なページに移動させることができます。
私はSuspensionManagerに固執します。より MVVM に適したものにしたい場合は、必要に応じてビューモデルに挿入されるサービスにラップできます。
NuGet または上でリンクした CodePlex サイトから入手できるオープンソースのOkra App Frameworkに興味があるかもしれません。これは、Windows 8 および MVVM パターンでうまく動作するようにゼロから設計されています (MVVM Light 基本クラスを引き続き使用できます)。
上記のすべてを自動的に処理するナビゲーションマネージャーがあります-アプリケーションのナビゲーションスタックの管理、アプリケーションの一時停止/終了時のスタックの永続化、さらにはビューモデルがシンプルなインターフェースを介して独自の状態を永続化できるようにします(SuspensionManagerがページに対してどのように機能するかなど) )。
(免責事項: 私はこのプロジェクトの主任開発者です)
私はもともとWP7用にこれを書き、Win8RT用に更新しています。これにより、ビューモデルに保持するプロパティに属性をアタッチできます。その後、PersistenceManagerは、アプリが一時停止されたときに属性を脱水し(ファイルにシリアル化)、再開したときに再水和します。
WP7とWin8、基本的なMVVMパターンとMVVMライトの例があります