2017-08-13 2 views
0

I mis en œuvre et il fonctionne avec la navigation NavigationService par Prism:Comment utiliser par programme le service de navigation de Prism?

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

Dans la commande de bouton particulier je mets en œuvre par exemple:

_navigationService.NavigateAsync("FirstPage"); 

très facile, mais. Que faire si je veux:

Aller à la première page, vérifier quelque chose et si c'est vrai immédiatement aller à la "deuxième page"? Ça ne marche pas! Le bouton doit être cliqué sinon la navigation ne fonctionne pas

Est-ce un bug, ou est-ce que je manque quelque chose?

Merci!

Répondre

0
  1. Sur votre FirstPage ou FirstPageViewModel vous devez implémenter l'interface INavigatedAware.

  2. Sur NavigatedTo (ce sera appelé une fois que vous accédez à FirstPage), vous devriez vérifier l'état et naviguer à secondepage si cela est vrai

Exemple de le faire sur votre classe 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"); 
     } 
    } 
}