我在Windows窗体项目中正确设置ComboBox选定项目绑定时遇到麻烦。
这个问题与from this other question不同,因为在我的情况下,comboBox数据源是KeyValuePair的ObservableCollection,而不是从Enum类型读取的字符串。行为似乎有所不同。
例如,绑定的设置方法如下:
public void Initialize()
{
comboBoxControllerModel.DataSource = vm.ControllerModels;
comboBoxControllerModel.DisplayMember = "Value";
comboBoxControllerModel.ValueMember = "Key";
comboBoxControllerModel.DataBindings.Add("SelectedItem",
vm,
"SelectedControllerModel",
true,
DataSourceUpdateMode.OnPropertyChanged);
}
comboBox项已正确填充,但是当我选择任何一项时,未按下“ SelectedControllerModel”设置器。但是,当我离开控制焦点时,则是设置器被击中。
public ObservableCollection<KeyValuePair<int, string>> ControllerModels
{
get
{
return new ObservableCollection<KeyValuePair<int, string>>()
{
new KeyValuePair<int, string>(1, "Model 1"),
new KeyValuePair<int, string>(2, "Model 2")
};
}
}
private KeyValuePair<int, string> _selectedControllerModel;
public KeyValuePair<int,string> SelectedControllerModel
{
get
{
return _selectedControllerModel;
}
set
{
_selectedControllerModel = value;
OnPropertyChanged();
}
}
据我了解,属性更改后,应立即调用OnPropertyChanged,对吗?
关于如何解决此问题的任何想法?