Xamarin Forms - 棱镜检测 GoBack

Dim*_*ris 1 prism xamarin.forms

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

我有一个有 3 个页面的 APP(PageA、PageB 和 PageC)。

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

我的问题是,当我导航到 PageB(从 PageA 或 PageC)时,Prism 是否提供了一种方法来识别我是否通过按后退按钮最终到达 PageB?

Dan*_* S. 6

目前,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;
    }
}
Run Code Online (Sandbox Code Playgroud)