4

タイトルにあるように、IRegionNavigationJournalのGoBackメソッドに問題があります。まず第一に私のシナリオ:

2つのPrismモジュール1つのコンテンツ領域を備えたPrismシェル

を介してナビゲートするだけRegionManager.RequestNavigate("region", "ModuleName")です。さらに、ビューとビューのViewModelをUnitycontainerにModuleNameで登録します

モジュールの1つは、2番目のモジュール(およびそれ以降のすべてのモジュール)がnavigatetoコマンドを登録するダッシュボードモジュールです。このコマンドは、モジュール2へのナビゲートを要求します。

すべてが正常に機能し、ダッシュボードはコンテンツ領域へのナビゲートを要求し、表示され、モジュール2のnavigatetoコマンドをレンダリングします。

2番目のモジュールのnavigatetoコマンドをクリックすると、2番目のモジュールがコンテンツ領域に表示されます。

さらに、すべてのモジュールがGoBackコマンドをシェルに挿入して、メソッドIRegionNavigationJournal.GoBack内でさらにモジュール固有の処理を実行します。OnNavigateTo

すべてのViewModelが実装されINavigationAwareます(正確には、これはベースビューモデルに実装されます)。OnNavigatedTo内でNavigatioServiceを保存します。モジュール2のGoBackコマンドを実行した後、実行される最後のアクションは、モジュール2のOnNavigateFromの呼び出しです。ダッシュボードのOnNavigateToは呼び出されません。モジュール2のビューはcontentregionにとどまり、それだけです。

アプリケーションをデバッグすると、IRegionNavigationJournalのバックスタックはURI「DashBoard」を含む1つのエントリを示します。

いくつかのコードスニペット:

レジスタタイプ:

container.RegisterType<object, DashboardViewModel>(new  ContainerControlledLifetimeManager());
container.RegisterType<object, DashboardView>(ModuleResources.ModuleName,
            new ContainerControlledLifetimeManager());

ナビゲートのリクエスト:

regionManager.RequestNavigate(ShellRegionNames.ContentRegion, ModuleResources.ModuleName);

戻る:

 navigationService.Journal.GoBack();

誰もが助けてくれることを願っています。

前もって感謝します

4

1 に答える 1

1

メソッド内の文字列はRegisterType<T>、ビューのクラス名と同じである必要があるようです。ARequestNavigate(RegionName, ViewName) はさまざまな文字列で機能しますが、そうでGoBack()はありません。

于 2013-03-11T10:04:32.023 に答える