2016-11-19 2 views
0

私はAzure B2CをXamarin Formsで実装しています.Prismが提供するMVVMアーキテクチャを使用する以外は、azureが公開しているチュートリアルのいくつかを実装したいと思います。Phenm.formsのViewModelの後方にあるAuthenitciation Logicのマイグレーション

私はXamarin Formsフレームワークを気にしませんが、私はプリズムナビゲーション、PageDialog、イベント機能を好むだけです。

私の問題は、View CodeのコードをPrism ViewModelに移行するのが苦労していることです。

私は、コードビハインドのxaml定義で既に参照しているビューモデルを使用する方法があったと考えていましたが、ナビゲーションの関連コマンドを呼び出しながら、コードの背後にある。

しかし、私はフレームワークをかなり新しくしており、このアプローチが状況に適していないと思われます。

私が説明しようとしています何の相続人一例

:私はビューモデルではなく

protected override async void OnAppearing() 
    { 
     try 
     { 
      PublicClientApplication publicClientApplication = new PublicClientApplication(AuthParameters.Authority, AuthParameters.ClientId); 
      var authResult = await publicClientApplication.AcquireTokenSilentAsync(AuthParameters.Scopes, "", AuthParameters.Authority, AuthParameters.Policy, false); 

      await Navigation.PushAsync(new MainPage()); 

     } 
     catch 
     { 

     } 
    } 

からInaviagtionServiceを使いたい 私たちは、フォームのナビゲーションを使用しての背後にあるというよりコードからOnAppearing方法を持っています代わりに、このような

await Navigation.PushAsync(new MainPage()); 

は何か:

await Viewmodel._navigationService.NavigateAsync("MainPage"); 
012これを使用するよりも読書のためのためのの

感謝:)

答えて

1

あなたはそれが

public async Task NavigateToMainAsync 
{ 
    await _navigationService.NavigateAsync("MainPage"); 
} 

次のようになりましょうあなた

のためのNavigationServiceをcalllうViewModelにでパブリックメソッドを公開するために必要なすべてのまあ最初のステップは、ViewModelをコードの背後に公開することです。コードの背後にあるコンストラクタからそれを行うことができます。ここでのキーワードは、BindingContextを

private readonly MyPageViewModel _viewModel; 
public MyPage() 
{ 
    InitializeComponent(); 
    _viewModel = (MyPageViewModel)BindingContext; 
} 

であり、あなたが望むよう、あなたは_viewModelを使用することができます。 私はそれが醜いと思うので、私はnavigationService自体を公開しません

+0

ありがとう、ありがとうございます。 BindingContextはまさに私が探していたキーワードでした – whiskeycoder

関連する問題