2013-04-11 3 views
1

내 문제는 내 ViewModel에서 'SelectionChanged'이벤트를 호출하려고한다는 것입니다.MVVM SelectionChanged Combobox가 'Set'을 호출하지 않습니다.

나는 콤보 상자 (여기 ListPicker라고, 그것의 전화 응용 프로그램)이 있습니다

<tool:ListPicker Name="txt_LZZ" 
    ItemsSource="{Binding ZZR}" SelectedItem="{Binding MySelectedItem}" /> 

뷰 모델에서 내 재산은 다음과 같습니다

private List<string> _zzr; 
    public List<string> ZZR 
    { 
     get 
     { 
      _zzr = new List<string>(); 
      _zzr.Add("Jahr"); 
      _zzr.Add("Monat"); 
      _zzr.Add("Woche"); 
      _zzr.Add("Tag"); 
      return _zzr; 
     } 
     set 
     { 
      _zzr = value; 
      RaisePropertyChanged(() => ZZR); 
     } 
    } 

    private string _mySelectedItem; 
    public string MySelectedItem 
    { 
     get 
     { 
      return _mySelectedItem; 
     } 
     set 
     { 
      if (value == _mySelectedItem) 
       return; 
      _mySelectedItem = value; 
      RaisePropertyChanged(() => MySelectedItem); 
      GetValues(); 
     } 
    } 

이 프로그램은 get 메소드를 한번 호출 _mySelectedItem의 값은 'null'입니다. 필자가 원하는 것은 Combobox (ListPicker)에서 SelectedItem을 변경할 때 ViewModel이 MySelectedItem에 대한 세터에있는 GetValues ​​메서드를 호출해야한다는 것입니다. 문제 : -> ViewModel이 setter를 호출하지 않습니다. 왜?

답변

1

바인딩 TwoWay의 모드를 설정하십시오 :

<tool:ListPicker Name="txt_LZZ" 
    ItemsSource="{Binding ZZR}" SelectedItem="{Binding MySelectedItem, Mode=TwoWay}" /> 

나는 또한 게터에 값 수집을 인스턴스화 할 것, 대신 세터 개인을하고,의 속성에 값을 할당하여 (예 : 생성자 또는 뷰 모델이 활성화 된 경우).

+0

필자는 ItemsSource를 설정했는데, 필자는 필자가 필요하지 않다고 생각했기 때문에 ItemsSource를 설정했습니다. 초점을 맞추고 싶지 않았습니다 ... 첫 번째 게시물을 편집 할 것입니다. – Rudi

+0

답변이 업데이트되었습니다. – devdigital

+0

감사! :) 문제는 'Mode = TwoWay'로 설정하지 않았습니다. 그리고 네, 저는 getter에 값을 설정해서는 안되는 것을 알고 있습니다 만, 테스트 용이었습니다. – Rudi