![](/img/trans.png)
[英]Xamarin.Forms and Prism - How to pass data and navigate to another view?
[英]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.