Combobox Winforms Выбранный пункт bindin - PullRequest
0 голосов
/ 23 мая 2019

У меня возникли проблемы с правильной установкой привязки выбранного элемента 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 должен заставить вызывать сеттер, как только свойство будет изменено, верно?

Есть идеи, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...