【发布时间】:2019-11-25 17:09:48
【问题描述】:
当我调查一个问题时,即使在导航到另一个页面后,我的应用仍停留在初始屏幕上,我发现了一些对我来说似乎很奇怪的事情。
我设法在一个小而简单的项目中重现了这个问题。 基本上我的 Prism 项目中有 3 个页面和 ViewModel:SplashPage (ContentPage)、MainPage (ContentPage)、RootPage (MasterDetailPage)。
它们都注册了导航,以及 NavigationPage。
这是我的 App.xaml.cs 中的内容:
protected override async void OnInitialized()
{
InitializeComponent();
await NavigationService.NavigateAsync("/SplashPage");
}
并在 SplashPageViewModel 的 OnNavigatedTo 覆盖:
public override async void OnNavigatedTo(INavigationParameters parameters)
{
Debug.WriteLine($"URI: {NavigationService.GetNavigationUriPath()}");
await NavigationService.NavigateAsync("/RootPage/NavigationPage/MainPage");
Debug.WriteLine($"URI: {NavigationService.GetNavigationUriPath()}");
}
这是输出:
[0:] URI: /SplashPage
[0:] URI: /RootPage/NavigationPage/MainPage/SplashPage?useModalNavigation=true
我感到很困惑,因为我认为任何以“/”开头的导航请求都应该清除导航堆栈。那么为什么 SplashPage 仍然存在?
【问题讨论】:
-
试试这个:
await NavigationService.NavigateAsync("app:///RootPage/NavigationPage/MainPage"); -
谢谢,但结果相同
标签: xamarin.forms prism