Domanda

Il mio legame si configura come questo:

        _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 proprietà "AvailableUnits" è una raccolta di stringhe e la "SelectedUnit" è una stringa-proprietà. Ora l'elenco a discesa è popolato come previsto, ma quando seleziono e voce dell'elenco, la modifica non viene propagata alla fonte vincolante. Qualsiasi idea di cosa sto facendo male?

Aggiornamento:

ho creato un piccolo progetto di prova e questo problema si verifica quando aggiungo un ToolStripComboBox come un elemento secondario di un altro ToolStripItem. Se aggiungo il ToolStripItem direttamente al tutto MenuStrip funziona bene. Il BindingContext non è assegnato al ToolStripComboBox quando aggiunto come un elemento secondario (vedi il mio codice-commento) e la mia correzione non sembra fare che cosa è necessario per ottenere questo al lavoro.

Nessuna soluzione corretta

Altri suggerimenti

Si può cambiare

 _selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel);

Per

 _selectXAxisUnitViewModelBindingSource.DataSource = new SelectXAxisUnitViewModel();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top