如何以编程方式使用Prism的NavigationService?

时间:2017-08-13 02:57:30

标签: c# .net xamarin prism navigationservice

我实施了它,它可以通过Prism的NavigationService进行导航:

Math.random

在特定按钮的命令中,我实现了例如:

protected override void OnInitialized()
{
    InitializeComponent();

    NavigationService.NavigateAsync("FirstPage?title=FirstPage");
}

protected override void RegisterTypes()
{
    Container.RegisterTypeForNavigation<MainPage>("MainPage");
    Container.RegisterTypeForNavigation<FirstPage>("FirstPage");
    Container.RegisterTypeForNavigation<FirstPage>("SecondPage");
}
很容易,但是。如果我想:

转到第一页,检查一下是否真的立即转到“第二页”?它不起作用!必须单击该按钮,否则导航不起作用

这是一个错误,还是我错过了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 在您的FirstPage或FirstPageViewModel上,您必须实施 INAVigatedAware 界面。

  2. NavigatedTo (这将在您导航到FirstPage后调用)中,您应检查条件并导航到SecondPage,如果为true

  3. 在FirstPage类上执行此操作的示例:

    public partial class FirstPage : ContentPage, INavigatedAware
    {
        INavigationService _navigationService;
        bool myCondition = true;
    
        public FirstPage(INavigationService navigationService)
        {
            _navigationService = navigationService;
            InitializeComponent();
        }
    
        void OnNavigatedFrom(NavigationParameters parameters)
        {
    
        }
    
        void OnNavigatedTo(NavigationParameters parameters)
        {
            if(myCondition == true)
            {
               _navigationService.NavigateAsync("SecondPage");
            }
        }
     }