首页 > 解决方案 > 为什么 await _navigationService.NavigateAsync 在 OnNavigatedTo 函数中不起作用

问题描述

一直在这几天。很简单的逻辑。如果 bla = true 跳过登录页面,则跳转到主页。

我已经剥离了代码来演示这个。登录按钮正常导航。但是实际上应该跳过登录页面,因为 OnNavigatedTo 具有相同的 NavigateAsync 命令。

没有意义的副作用是 HomeViewModel 代码在 OnNavigatedTo 函数运行时运行。

 public class LoginViewModel : AppMapViewModelBase
{
    private readonly INavigationService _navigationService;

    public DelegateCommand LoginCommand { get; private set; }

    public LoginViewModel(INavigationService navigationService) : base(navigationService)
    {
        LoginCommand = new DelegateCommand(LoginUserAsync);
        _navigationService = navigationService;
       

       
    }


    private async void LoginUserAsync()
    {
       
        //This works as expected
        await _navigationService.NavigateAsync("/MasterDetail/NavigationPage/Home");
    }


    public override async void OnNavigatedTo(INavigationParameters parameters)
    {
        base.OnNavigatedTo(parameters);
        //This Executes the code on Home but does not Jump there.
        await _navigationService.NavigateAsync("/MasterDetail/NavigationPage/Home");
    }


   
}

HomeViewModel 代码以某种方式运行而无需进入主页。

 public HomeViewModel(INavigationService navigationService) : base (navigationService)
    {
        Debug.WriteLine("............HomeViewModel Loaded.................................");
    } 

标签: xamarinprism

解决方案


将 App 中的主要 OnInitialized 从

await NavigationService.NavigateAsync("NavigationPage/Login");

await NavigationService.NavigateAsync("/Login");

停止 NavigateAsync("/..... 通过 App-OnInitialized

不知道为什么,但它有效。


推荐阅读