Изменение ToolStripComboBox.SelectedItem не распространяется на источник привязки - PullRequest
0 голосов
/ 28 апреля 2010

Моя привязка настроена так:

        _selectXAxisUnitViewModelBindingSource = new BindingSource();
        _selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel);

        _selectedUnitComboBoxBindingSource = new BindingSource();
        _selectedUnitComboBoxBindingSource.DataSource = _selectXAxisUnitViewModelBindingSource;
        _selectedUnitComboBoxBindingSource.DataMember = "AvailableUnits";

        _selectedUnitComboBox.ComboBox.DataSource = _selectedUnitComboBoxBindingSource;
        _selectedUnitComboBox.ComboBox.DisplayMember = String.Empty;
        _selectedUnitComboBox.ComboBox.ValueMember = String.Empty;
        _selectedUnitComboBox.ComboBox.DataBindings.Add("SelectedItem",
                                                        _selectXAxisUnitViewModelBindingSource, 
                                                        "SelectedUnit", true, DataSourceUpdateMode.OnPropertyChanged);

        // this is a bug in the .Net framework: http://connect.microsoft.com/VisualStudio/feedback/details/473777/toolstripcombobox-nested-on-toolstripdropdownbutton-not-getting-bindingcontext
        _selectedUnitComboBox.ComboBox.BindingContext = this.BindingContext;

Свойство «AvailableUnits» представляет собой набор строк, а «SelectedUnit» представляет собой свойство строки. Теперь выпадающий список заполняется, как и ожидалось, но когда я выбираю и пункт в списке, изменение не распространяется на источник привязки. Есть идеи, что я делаю не так?

Обновление:

Я создал небольшой тестовый проект, и эта проблема возникает, когда я добавляю ToolStripComboBox в качестве подпункта другого ToolStripItem. Если я добавлю ToolStripItem непосредственно в MenuStrip, все будет нормально. BindingContext не присваивается ToolStripComboBox при добавлении в качестве подпункта (см. Мой комментарий к коду), и мое исправление, похоже, не делает того, что необходимо, чтобы это работало.

1 Ответ

0 голосов
/ 28 апреля 2010

Можете ли вы изменить

 _selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel);

Для

 _selectXAxisUnitViewModelBindingSource.DataSource = new SelectXAxisUnitViewModel();
...