Pregunta

Mi unión se configura como esto:

        _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 propiedad "AvailableUnits" es una colección de cadenas y el "SelectedUnit" es una cadena de propiedad. Ahora la lista desplegable está poblada como se esperaba, pero cuando selecciono y elemento de la lista, el cambio no se propaga al origen de enlace. Cualquier idea de lo que estoy haciendo mal?

Actualización:

He creado un proyecto de prueba poco y este problema se produce cuando agrego un ToolStripComboBox como un elemento secundario de otro ToolStripItem. Si añado ToolStripItem directamente a la MenuStrip todo funciona bien. BindingContext no está asignado a la ToolStripComboBox cuando se añade como un elemento secundario (ver mi código-comentario) y no parece que ver cuál es necesario para conseguir que esto funcione mi dosis.

No hay solución correcta

Otros consejos

¿Se puede cambiar

 _selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel);

a

 _selectXAxisUnitViewModelBindingSource.DataSource = new SelectXAxisUnitViewModel();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top