Winforms组合框SelectedItem绑定

时间:2019-05-23 15:04:35

标签: c# winforms

我在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,对吗?

关于如何解决此问题的任何想法?

0 个答案:

没有答案