在 Xamarin 表单中使用 Prism 的新手:INavigationAware 为我提供了 OnNavigatedTo 处理程序。我希望这种形式的不同行为取决于我们从哪里导航。有没有办法获得前一页?
具体来说,如果某个条件为真,我的页面 A 会打开页面 B(模态)。但是,如果从页面 B 中点击后退按钮,将我返回到页面 A,我不想再次打开页面 B。相反,我想回到导航堆栈上 Page A 下方的上一页。
在 Xamarin 表单中使用 Prism 的新手:INavigationAware 为我提供了 OnNavigatedTo 处理程序。我希望这种形式的不同行为取决于我们从哪里导航。有没有办法获得前一页?
具体来说,如果某个条件为真,我的页面 A 会打开页面 B(模态)。但是,如果从页面 B 中点击后退按钮,将我返回到页面 A,我不想再次打开页面 B。相反,我想回到导航堆栈上 Page A 下方的上一页。
顺利通过 Page 将直接违反 MVVM 设计,因为您的 ViewModel 应该没有关于关联视图的直接线索。也就是说,所有 INavigationAware 方法都使用 NavigationParameters,这意味着您可以传递一些可以检查的值,类似于以下内容:
NavigationService.NavigateAsync("ModalA", new NavigationParameters {{"reason", "foo"}});
public void OnNavigatedTo(INavigationParameters navigationParameters)
{
switch(navigationParameters.GetValue<string>("reason"))
{
case "foo":
// Do Foo
break;
case "bar":
// Do Bar
break;
}
}