У меня возникли проблемы с правильной установкой привязки выбранного элемента ComboBox в проекте Windows Forms.
Этот вопрос отличается от этого другого вопроса , потому что в моем случае источником данных comboBox является ObservableCollection KeyValuePair вместо строк, считанных из типа 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 должен заставить вызывать сеттер, как только свойство будет изменено, верно?
Есть идеи, как это исправить?