在Xamarin表单中使用Prism的新功能:INavigationAware为我提供了OnNavigatedTo处理程序。我希望这种形式的行为取决于我们从何处导航。有没有办法获得上一页?
特别是我有A页,如果满足特定条件,则打开B页(模式)。但是,如果从B页单击了后退按钮,使我返回到A页,则我不想再次打开B页。而是,我想回到导航堆栈上A页下的上一页。
答案 0 :(得分:1)
通过Page会直接违反MVVM设计,因为ViewModel应该不具有有关关联View的直接线索。也就是说,所有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;
}
}