Xamarin Forms - Prism 检测 GoBack

Xamarin Forms - Prism detect GoBack

使用 Xamarin.Forms v4.5 和 Prism v7.2

我有一个包含 3 个页面(PageA、PageB 和 PageC)的应用程序。

我可以从 PageA 导航到 PageB,然后从 PageB 导航到 PageC。在 PageC 中,我可以点击后退按钮返回到 PageB。

我的问题是,当我导航到页面 B(从页面 A 或页面 C)时,Prism 是否提供了一种方法来确定我是否通过按后退按钮最终到达了页面 B?

目前 Xamarin.Forms 不提供挂钩底层导航服务和拦截某些流程中的完整导航过程的方法,例如当有人单击硬件后退按钮时。因此,我们能做的有限,因此无法支持 IConfirmNavigation 以防止导航离开。

话虽如此,我们能够观察到页面已弹出,并且我们仍然能够调用 OnNavigatedFrom/OnNavigatedTo。您可以通过获取 NavigationMode 轻松确定发生了什么。为此,您的代码可能如下所示:

public void OnNavigatedTo(INavigationParameters parameters)
{
    var mode = parameters.GetNavigationMode();
    switch(mode)
    {
        case NavigationMode.New:
            break;
        case NavigationMode.Back:
            break;
        case NavigationMode.Forward:
            break;
    }
}