繁体   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