2017-07-27 12 views
0

私はPrism Xamarinのナビゲーションを理解しようとしていて、xamarin自体に関連する方法を教えてくださいPrism xamarin疑問。あなたは明確にすることができますか?

私が間違っている場所を誰かが修正できますか?プリズム

NavigationService.GoBackAsync 

と同じ

Is NavigationService.NavigateAsync(uri,useModalNavigation: false) 

でも

Xamarin      Prism 
    Navigation.PopAsync = NavigationService.NavigateAsync(uri, 
                  useModalNavigation: true)  
         = NavigationService.GoBackAsync 

    Navigation.PushAsync = NavigationService.NavigateAsync(uri, 
                  useModalNavigation: false)  

、どちらも同じことをやっていますか? OnNavigatedTo対

OnNavigatingTo(NavigationParametersパラメータ)(NavigationParametersパラメータ)

コンストラクタが発射された後、彼らの両方が発射されています。 実用的な例を使用する場合と、使用する場合の例

あなたはそこにどのようなロジックを配置していますか?フォームをロードするときに使用しましたか?また、一般的にどのようなバリデーションを行い、その理由は?

public void OnNavigatedTo(NavigationParameters parameters) 
    { 
     if(parameters.GetValue<NavigationMode>(KnownNavigationParameters.NavigationMode) == NavigationMode.Back) 
     {    
     } 

    //or logic like 
    if (parameters.ContainsKey("myId")) 
     { 
     } 
    } 

なぜparameters.ContainsKey( "myId")またはnavigationModeチェックを使用しますか。

私はOnNavigatedTo/OnNavigatingToの使用方法を理解しようとしています。 誰かが少数の言葉でシナリオを語ることができたら、私はこれらの方法の使い方を理解するでしょう。事前に

感謝

+0

ブライアン・ラグナスのビデオを見たことがありますか?このトピックに関する素晴らしい情報があります。たとえば、[リンク] https://www.youtube.com/watch?v=DYRLcqG2BAY – Tintow

+0

動画を見てくれてありがとうございましたが、非常に一般的で細部までは行かなかったので、あまりにも多くのことを見せて説明する時間は非常に短いと思います – developer9969

答えて

1

呼び出しがあるため、プリズムの追加機能(パラメータ、深いナビゲーションなど)のが、簡単な言葉で、完全に同等ではありません。

Xamarin      Prism 
Navigation.PopAsync = NavigationService.GoBackAsync 

Navigation.PushAsync = NavigationService.NavigateAsync(uri, useModalNavigation: false) 

Navigation.PushModalAsync = NavigationService.NavigateAsync(uri, useModalNavigation: true) 

あなたはページ3その後、その後、ページ1へページ2をナビゲートし、正しいナビゲーションスタックを維持し、一度

NavigationService.NavigateAsync("Page1/Page2/Page3"); 

で複数のページをナビゲートすることができるようにプリズムの深いナビゲーションも非常に強力です。

また、これはあなたが、彼らは他のページに得ることができる前に、ユーザーがログインしたいログイン/認証シナリオに便利です

NavigationService.NavigateAsync(new uri("www.myapp.com/LoginPage", UriKind.Absolute); 

絶対URIを使用して全体ナビゲーションスタックを置き換えることができます。

OnNavigatingTo()メソッドとOnNavigatedTo()メソッドは似ていますが、異なる時間に発生します。あなたは

{Navigate to Page1} 
Page1ViewModel.Constructor 
Page1ViewModel.OnNavigatingTo 
Page1ViewModel.OnNavigatedTo 
{Navigate to Page 2} 
Page2ViewModel.Constructor 
Page2ViewModel.OnNavigatingTo 
Page1ViewModel.OnNavigatedFrom 
Page2ViewModel.OnNavigatedTo 

が表示されます呼び出しをトレースした場合ので、2ページ目のOnNavigatingToは、最初のページのOnNavigatedFrom前に呼び出された後、第2ページのOnNavigatedToが呼び出されます。

これにより、要件に応じてナビゲーションフローの正確なポイントにコードを配置することができます。あるページから別のページに移動するだけの場合は、おそらくOnNavigatedToが必要です。

希望に役立ちます。

+0

[サンプル](https://github.com/PrismLibrary/Prism-Samples-Forms)をご覧になるか、[QuickStart Templates](http: /dansiegel.net/post/2017/07/16/prism-quickstart-templates)、これは完全な作業用アプリケーションを提供し、さらにポップアッププラグインを使用します。 –

+0

@Tintowあなたの時間と説明に感謝多くのサンプルをもう一度見ていきます。 – developer9969

+0

@ DanS。私はstackflowの返信とgithub.Iのあなたの例から多くのことを学んできました。私が得られないことの1つは、Prism.Loggerの目的は何ですか。実際に何かを出力していますか?私はあなたの例でそれを使用し、それがプリズムのユーザーとして価値があるかどうかを理解しようとしていたことに気付きました。 – developer9969

関連する問題