使用Xamarin。Forms v4.5和Prism v7.2
我有一个3页的APP(A页、B页和C页(。
从PageA,我可以导航到PageB,也可以从PageB导航到PageC。从第C页,我可以点击后退按钮,然后返回第B页。
我的问题是,当我导航到PageB(从PageA或PageC(时,Prism是否提供了一种方法,可以通过按下后退按钮来确定我是否最终到达PageB?
此时是Xamarin。表单没有提供一种方法来挂接底层导航服务,并在某些流中拦截完整的导航过程,例如当有人单击硬件后退按钮时。因此,我们所能做的有限,因此无法支持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;
}
}