2010-04-28 4 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"인 문자열 속성입니다. 이제 드롭 다운 목록이 예상대로 채워지지만 목록에서 항목과 항목을 선택하면 변경 내용이 바인딩 소스로 전파되지 않습니다. 내가 뭘 잘못하고 있는거야?

는 업데이트 :

는 좀 테스트 프로젝트를 생성하고 내가 다른 ToolStripItem을의 하위 항목으로되는 ToolStripComboBox를 추가 할 때이 문제가 발생합니다. MenuStrip에 ToolStripItem을 직접 추가하면 모든 것이 잘 동작합니다. BindingContext는 하위 항목으로 추가 할 때 ToolStripComboBox에 할당되지 않으며 (내 코드 주석 참조) 내 수정 프로그램이이 작업을 수행하는 데 필요한 것을 수행하지 않는 것 같습니다.

답변

0

당신은

_selectXAxisUnitViewModelBindingSource.DataSource = new SelectXAxisUnitViewModel(); 
+0

아니, 실제 인스턴스가 나중에 할당 된

_selectXAxisUnitViewModelBindingSource.DataSource = typeof(SelectXAxisUnitViewModel); 

을 변경할 수 내가 먼저 스키마 바인딩을 설정합니다. – Marius