6

mvvm lightを使用して状態処理(実行/再開/状態の終了)を実装する方法。直面している主な問題はナビゲーションです。私はナビゲーションスタックで完全に制御されていません。MVVMLightでこれを効果的に管理する方法。

4

2 に答える 2

4

GridViewまたはSplitViewテンプレートのいずれかを使用して新しいプロジェクトを開始し、CommonフォルダーのSuspensionManager.csを確認します。これにはRegisterFrameと呼ばれるメソッドがあり、呼び出されると、フレームからすべてのナビゲーションイベントの追跡を開始し、アプリケーションが一時停止および再開したときに状態を保存して復元しようとします。

アプリケーションのメインフレームはApp.OnLaunched(App.xaml.cs)のSuspensionManagerに登録され、保存はApp.OnSuspendingで行われます。

最後に、同じくCommonフォルダーにあるLayoutAwarePage.csを見てください。LayoutAwarePageから継承して、PortraitおよびSnappedデザインタイムのサポートを取得できます。また、SuspensionManagerを利用して、ナビゲーション状態のキャッシュを処理しようとします。したがって、ページが別のページから移動されたか、履歴書の一部として移動されたかに関係なく、仮想メソッドLoadStateは正しいデータで呼び出されます。

明らかに、このパターンはページ自体で直接ナビゲーション状態を管理していますが、このパターンを微調整して、ViewModelsが同じ方法で利用できる一種の「SuspensionService」を作成することができます。

于 2012-07-30T19:08:16.387 に答える
1

CodePlexとNuGetで無料で利用できるオープンソースのOkraAppFrameworkに興味があるかもしれません(免責事項:私はこのプロジェクトのリード開発者です)。これは、Windows 8アプリケーション、特にMVVMパターンを使用するアプリケーション向けにゼロから設計されています(MVVM Light基本クラスを使用してビューモデルを定義できます)。

特に興味深いのは、

  • Windows8ナビゲーションモデルを理解するナビゲーションマネージャー
  • アプリケーションの終了時にその状態を自動的に保持できるナビゲーションスタック
  • ビューモデルが独自の状態を維持するためのメカニズム(単純なインターフェイスを介して)
  • 自動ビューおよびビューモデルの構築と配線(デフォルトではMEF属性を使用)
于 2012-08-15T12:10:08.847 に答える