2010-04-28 4 views
0

Ma liaison est configuré comme ceci:ToolStripComboBox.SelectedItem changement ne se propage pas à la source de liaison

 _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; 

La propriété « AvailableUnits » est une collection de chaînes et la « SelectedUnit » est une chaîne de propriété. Maintenant, la liste déroulante est remplie comme prévu, mais lorsque je sélectionne et élément dans la liste, la modification n'est pas propagée à la source de liaison. Une idée de ce que je fais mal?

Mise à jour:

J'ai créé un petit projet de test et ce problème se produit lorsque j'ajoute un ToolStripComboBox comme un sous-élément d'un autre ToolStripItem. Si j'ajoute le ToolStripItem directement au MenuStrip, tout fonctionne correctement. Le BindingContext n'est pas affecté à ToolStripComboBox lorsqu'il est ajouté en tant que sous-élément (voir mon commentaire de code) et mon correctif ne semble pas faire quoi que ce soit pour que cela fonctionne.

Répondre

0

Pouvez-vous changer

_selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel); 

Pour

_selectXAxisUnitViewModelBindingSource.DataSource = new SelectXAxisUnitViewModel(); 
+0

Non, l'instance réelle est attribué plus tard et je veux mettre en place le schéma de liaison en premier. – Marius