簡體   English   中英

Xamarin.Forms Prism-使用導航服務從一個詳細信息頁面導航到另一個

[英]Xamarin.Forms Prism - Using navigation service to navigate from one detail page to another

在我的Xamarin.Forms Prism應用中,我正在使用MasterDetailPage進行導航。

當我在一個詳細信息頁面上時,我想導航到另一個詳細信息頁面,就像我是從母版頁中選擇它一樣。

App.xaml.cs中的初始導航:

protected override void OnInitialized()
{
   ...
   NavigationService.NavigateAsync("MainPage/RootNavigation/MyFirstPage");
}

當我單擊MyFirstPage上的快捷方式按鈕時,我想轉到MainPage / RootNavigation / MySecondPage。 我能夠達到的最接近的結果是使用絕對Uri。

private async void OnShortcutTapped(MyModel sender)
{
  ...
  await _navigationService.NavigateAsync(new Uri("http://myapp.com/MainPage/RootNavigation/MySecondPage", UriKind.Absolute), navigationParams, null, false);
}

這基本上可以滿足我的需要,但是以這種方式導航后,如果使“母版”可見並為MySecondPage選擇菜單項,它將刷新詳細信息頁面,就像在導航至該頁面一樣。

有沒有更好的方法來維護此導航,以便母版頁知道MySecondPage已被顯示並且不嘗試重新加載它?

雖然您的導航模式對我而言沒有多大意義,但是您可以通過在MasterDetailPageViewModel中調用導航命令來實現所需的功能。 您可以通過多種方法來執行此操作。 您可以使用IEventAggregator將消息發送到MasterDetailPageViewModel進行導航,也可以使用CompositeCommand調用存在於MasterDetailPageViewModel上的DelegateCommand。

您可以在此處查看使用CompositeCommand的示例: https : //github.com/PrismLibrary/Prism-Samples-Forms/tree/master/UsingCompositeCommands

您還可以在我在Xamarin Evolve會議上提供的此示例中查看如何發送消息: https : //github.com/brianlagunas/Evolve2016SamplesAndSlides

另一個選擇是從后面的MyFirstPage代碼中調用App.Current.MainPage ViewModel的導航命令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM