在Xamarin Forms的Prism 7中,是否有办法在OnNavigatedTo处理程序中获取上一页

时间:2018-09-30 05:58:21

标签: c# xamarin xamarin.forms prism prism-7

在Xamarin表单中使用Prism的新功能:INavigationAware为我提供了OnNavigatedTo处理程序。我希望这种形式的行为取决于我们从何处导航。有没有办法获得上一页?

特别是我有A页,如果满足特定条件,则打开B页(模式)。但是,如果从B页单击了后退按钮,使我返回到A页,则我不想再次打开B页。而是,我想回到导航堆栈上A页下的上一页。

1 个答案:

答案 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;
    }
}