2017-11-17 7 views
0

Im는 Xamarin.Forms.But에서 viewmodel에 매개 변수를 전달하려고합니다. 해당 매개 변수를 사용하여 나머지 서비스를 호출하기 위해 페이지를로드하는 동안 그것을 사용하고 싶습니다. 매개 변수가 항상 null입니다. 레이블이나 등을 바인딩하면 해당 매개 변수를 볼 수 있습니다. 올바르게 작동하게 만들고 해당 매개 변수를 viewmodel의 load 이벤트에서 사용할 수 있습니까? 어떤 도움을 주셔서 감사합니다.viewmodel ins에서 매개 변수를 사용하는 방법 xamarin.forms

여기는 버튼 클릭 이벤트이며 Samplepage로 이동합니다.

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

있는 샘플 페이지 뷰 모델

 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를 참조하십시오.

샘플 페이지가 아닌 NavigationService에 bindingContext를 추가해야합니다.

에서 This Sample은 매개 변수와 더 나은 NavigationService 구조로 NavigationService를 사용합니다. 너는 그것을보아야한다.

의견 보내기. 이 미구엘에 대한

1

들으이이

_navigationService.NavigateToAsync<SamplePageViewModel>("Your_parameter"); 과 당신이 할 수처럼 xamarin.forms의 페이지를 탐색하는 동안 우선은 매개 변수를 보낼 수있는 나에게, 내가이 방법으로 내가 원하는 것을 할 수 있습니다 많은 도움이 이

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

처럼 예,이 구조는 항상 viewmodels 당신이 도움이 기뻐 친군 사이에 매개 변수를 보낼 수 있습니다 우선은을 사용하여 매우 훌륭해입니다 해당 페이지의 뷰 모델에 해당 매개 변수를 얻을. –