タイトルにあるように、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();
誰もが助けてくれることを願っています。
前もって感謝します