2017-08-13 63 views
0

我实现,它通过棱镜的工作原理与导航的NavigationService:如何以编程方式使用Prism的NavigationService?

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"); 
} 

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

_navigationService.NavigateAsync("FirstPage"); 

很容易,但。如果我想:

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

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

谢谢!

回答

0
  1. 在您的第一页或FirstPageViewModel您必须实现INavigatedAware接口。

  2. NavigatedTo(这将调用一旦你导航到第一页),如果这样做对你的第一页类的真正

例子中,你应该检查的条件,并导航到SecondPage:

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"); 
     } 
    } 
}