我的问题是我想在我的ViewModel中调用'SelectionChanged'事件。
我有一个ComboBox(此处称为ListPicker,它是一个电话应用程序):
<tool:ListPicker Name="txt_LZZ"
ItemsSource="{Binding ZZR}" SelectedItem="{Binding MySelectedItem}" />
ViewModel中的My Property如下所示:
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的setter中。问题: - &gt; ViewModel不会调用setter。为什么呢?
答案 0 :(得分:1)
尝试将绑定模式设置为TwoWay
:
<tool:ListPicker Name="txt_LZZ"
ItemsSource="{Binding ZZR}" SelectedItem="{Binding MySelectedItem, Mode=TwoWay}" />
我也不会在getter中实例化你的值集合,而是将setter设为私有,并为视图模型中的属性赋值(例如构造函数或激活视图模型时)。