使用绝对导航不会重置堆栈并强制使用模态导航

Using Absolute Navigation is not resetting the stack and is forcing modal navigation

我有一个带有登录屏幕和主页面的应用程序

当我初始化我的应用程序时,我将导航设置为 "NavigationPage/LoginPage"。当我登录到应用程序时,我使用路由“/NavigationPage/MainPage”通过绝对导航重置堆栈。我所有的页面都有一个绑定到当前导航 Uri 的标签,当我在登录并导航到主页后重置堆栈时,我的 Uri 看起来像这样

/NavigationPage/LoginPage/MainPage?useModalNavigation=true

我了解到,如果您有重复的页面,这可能会导致导航默认变为模态。但我正在重置堆栈,甚至重置 NavigationPage。这不会立即导致任何问题,但我发现在我的应用程序导航堆栈的较深部分,某些导航无法正常工作,这似乎是原因

有人知道为什么会这样吗?

我的代码

App.xaml.cs

protected override async void OnInitialized()
{
     InitializeComponent();

     await NavigationService.NavigateAsync("NavigationPage/LoginPage");
}

LoginPageViewModel.cs

public ICommand LoginCommand { get; }
public LoginPageViewModel(INavigationService navigationService) : base(navigationService)
{
     LoginCommand = new Command(Login);
     NavUri = NavigationService.GetNavigationUriPath();
}

private async void Login()
{
     await NavigationService.NavigateAsync("/NavigationPage/MainPage");
}

MainPageViewModel.cs

public MainPageViewModel(INavigationService navigationService) : base(navigationService)
{
     Title = "Main Page";
     NavUri = NavigationService.GetNavigationUriPath(); // current URI on the mainpage is /NavigationPage/LoginPage/MainPage?useModalNavigation=true

     NavigateToPageACommand = new Command(NavigateToPageA);
}

我正在使用; Xamarin 表格 4.6.0.726 Prism.Dryloc7.2.0.1422

似乎只是在 OnNavigatingFrom 期间出现的临时值。在重置堆栈时,导航似乎是模态的,但实际上不是。通过将 INavigationAware 添加到我的 ViewModelBase 并在 OnNavigatedTo 和 OnNavigatingFrom 方法中查看 GetNavigationUriPath 的结果发现了这一点。