2017-08-13 5 views
0

私が実装され、それがプリズムでのNavigationServiceとナビゲーションを動作します:特定のボタンのコマンドでプログラムでプリズムの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"); 

は非常に簡単ですが、。何をしたいのですか:

最初のページに移動し、何かをチェックしてください。それが真であれば、すぐに「第2ページ」に行きますか?それは動作しません!ボタンをクリックする必要があります。それ以外の場合、ナビゲーションは機能しません。

何か不足していますか?

ありがとうございます!あなたのFIRSTPAGEまたはFirstPageViewModelで

答えて

0
  1. あなたはINavigatedAwareインタフェースを実装する必要があります。

  2. NavigatedToでは、あなたがあなたのFIRSTPAGEクラスでそれを行うことの真の

例場合SecondPageに条件や移動を確認する必要があります(あなたが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"); 
     } 
    } 
} 
関連する問題