2013-04-11 42 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必须调用GetValues方法,该方法位于MySelectedItem的设置器中。问题: - > ViewModel不会调用setter。为什么?

回答

1

尝试将结合TwoWay的模式:

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

我也不会实例化值集合中的吸气剂,而是让二传手私人和值分配给该属性的视图模型(例如构造函数或激活视图模型时)。

+0

我已经设置了ItemsSource,因为我认为这不是必要的,我不想专注于此......我将编辑我的第一篇文章。 – Rudi 2013-04-11 09:57:13

+0

答复已更新。 – devdigital 2013-04-11 10:12:01

+0

谢谢! :)问题不是设置'Mode = TwoWay'。是的,我知道我不应该在getter中设置值,但它仅用于测试目的。 – Rudi 2013-04-11 10:18:00

相关问题