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;
}
}
使用 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;
}
}