使用绝对导航不会重置堆栈并强制使用模态导航
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 的结果发现了这一点。
我有一个带有登录屏幕和主页面的应用程序
当我初始化我的应用程序时,我将导航设置为 "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 的结果发现了这一点。