私のXamarin.Forms Prismアプリでは、ナビゲーションにMasterDetailPageを使用しています。Xamarin.Forms Prism - ナビゲーションサービスを使用して1つの詳細ページから別のページにナビゲート
私は1つの詳細ページにいますが、マスターページから選択したかのように別の詳細ページに移動したいと思います。 App.xaml.csで
初期ナビゲーション:私はMyFirstPage上のショートカットボタンをクリックすると
protected override void OnInitialized()
{
...
NavigationService.NavigateAsync("MainPage/RootNavigation/MyFirstPage");
}
、私はメインページ/ RootNavigation/MySecondPageに行きたいと思います。私が達成できた最も近いものは絶対的なウリを使用していたことです。
private async void OnShortcutTapped(MyModel sender)
{
...
await _navigationService.NavigateAsync(new Uri("http://myapp.com/MainPage/RootNavigation/MySecondPage", UriKind.Absolute), navigationParams, null, false);
}
これは基本的に私が欲しいものを私に取得しますが、それはページに移動されたかのように、私はマスターを見えるようにしてMySecondPageのメニュー項目を選択した場合、このように移動した後、それは詳細ページをリフレッシュします。
このナビゲーションを維持するより良い方法はありますか?マスターページでMySecondPageが既に表示されていて、再読み込みしようとしていないことがわかっていますか?
IEventAggregatorを実装して、MainPageViewModelを指定されたURI(RootNavigation/MySecondPage)にナビゲートしましたが、絶対URIと同じ最終結果を持つようです。イベントがナビゲーションを処理した後、マスターからMySecondPage項目を選択すると、MySecondPage.OnNavigatedFromとMySecondPage.OnNavigatedToが、新しいページをロードしているかのように呼び出されます。 – jkh
はい、これが予想されます。 PrismもXamarinもこれらのページをキャッシュします。ここでの利点は、MasterDeatialPageを再作成していないことです。 –
OK、これは実際のマスター選択を模倣するのに最も近いものですか? 2つ目の選択が無視されているかのように動作するため、OnNavigatedFrom/OnNavigatedToは実際にMaster選択を2回連続して実行するという点で異なります。 – jkh