2017-11-17 10 views
0

私はXamarin.Forms.Butでviewmodelにパラメータを渡そうとしています。また、そのパラメータを使って休憩サービスを呼び出すために、ページを読み込んでいる間に使用したいと思います。パラメータはnull常にです(私はそれをラベルなどにバインドすると、そのパラメータを見ることができます...) それは正しく動作させ、viewmodelのloadイベント内でそのパラメータを使用するにはどうしたらいいですか?どんな助けでもありがとうございます。ありがとうございましたviewmodelのパラメータを使用する方法xamarin.forms

ここはボタンクリックイベントで、サンプルページに移動します。

private void OntaptedBildirimItem(string param) 
    { 
     this._navigationService.NavigateTo(nameof(Views.SamplePage), param); 
    } 

これはこれはSamplePageコード

 public SamplePage(string parameter) 
    { 
     InitializeComponent(); 
     var viewModel = this.BindingContext as ViewModels.SamplePageViewModel; 
     if(viewModel != null && parameter != null) 
     { 
      viewModel.bildirimid = parameter; 
     } 
    } 

答えて

1

当社でサンプルページのViewModel

 private string _id; 
    public string id 
    { 
     get 
     { 
      return _id; 
     } 
     set 
     { 
      Set(() => id, ref _id, value); 
     } 
    }  
public SamplePageViewModel(INavigationService navigationService) : base(navigationService) 
    { 
     this._navigationService = navigationService; 
     this.Title = "Sample Page=" + id; // here the id is always null,but if I use it to bind a label in xaml ,it has a value. 
    } 

ですNavigationServiceが必要です。

SampleContextではなく、NavigationServiceにbindingContextを追加する必要があります。

This Sampleでは、NavigationServiceをパラメータとより良いNavigationService構造体で使用します。あなたはそれを見なければなりません。

フィードバックを送信してください。このミゲルため

1

Thxをが、これは私に多くのことができます、私はこの

_navigationService.NavigateToAsync<SamplePageViewModel>("Your_parameter"); ようxamarin.formsでページをナビゲートしながら。あなたは、パラメータを送信することができ、このアプローチによって、私がやりたいことができて、あなたのことができこの

public override async Task InitializeAsync(object yourparameter) 
     { 
      // use yourparameter as you wish 
     } 
+0

のようにはい、この構造はいつものviewmodelsはあなたが助けて喜ん.I'mの間でパラメータを送信することができます。あなたの使用は非常にgood.Iで、そのページの中のviewmodelそのパラメータを取得します。 –

関連する問題