2010-04-28 3 views
0

Мои связывания устанавливается как это:ToolStripComboBox.SelectedItem изменение не распространяется на связывание источника

 _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» является строкой-свойством. Теперь выпадающий список заполняется, как ожидалось, но когда я выбираю и элемент в списке, это изменение не распространяется на источник привязки. Любая идея, что я делаю неправильно?

Update:

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

ответ

0

Вы можете изменить

_selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel); 

Для

_selectXAxisUnitViewModelBindingSource.DataSource = new SelectXAxisUnitViewModel(); 
+0

Нет, фактический экземпляр назначается позже, и я хочу, чтобы настроить привязку схемы первой. – Marius