Question

Ma liaison est configuré comme ceci:

        _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 quand je sélectionne et élément dans la liste, le changement ne se propage pas à la source de liaison. Toute idée de ce que je fais mal?

Mise à jour:

Je créé un petit projet de test et ce problème se produit quand j'ajoute un ToolStripComboBox comme un sous-élément d'un autre ToolStripItem. Si j'ajoute ToolStripItem directement au tout MenuStrip fonctionne très bien. Le BindingContext n'est pas affecté au ToolStripComboBox lorsqu'il est ajouté comme un sous-article (voir mon code commentaire) et mon correctif ne semble pas faire ce qui est nécessaire pour obtenir ce travail.

Pas de solution correcte

Autres conseils

Pouvez-vous changer

 _selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel);

Pour

 _selectXAxisUnitViewModelBindingSource.DataSource = new SelectXAxisUnitViewModel();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top