Я пытаюсь реализовать следующее: Два комбинированных поля в форме Winforms, первый имеет список родительских категорий, второй - дочерние элементы родительского объекта , дочерний список изменяет содержимое в зависимости от выбора в родительском элементе.SelectedItem/Index/ValueChanged события не возникают, когда DataSource является Databound на ComboBox
Я пытаюсь сделать это правильно, используя привязку данных, но я нахожу странную причуду с помощью элемента управления ComboBox.
Я установил источник данных родителя вручную:
cboParent.DataSource = ParentDataSource
где ParentDataSource является IList<ParentDTO>
. Затем я могу связать seletedItem с DTO, таким образом:
cboParent.DataBindings.Add(new Binding("SelectedItem", bindingSource, "Parent", true, DataSourceUpdateMode.OnPropertyChanged));
связыванием с Parent
с ParentDTO
объектом на моем всеобъемлющем DTO.
Все довольно стандартно. Это работает и записывает изменения в мой объект DTO, как только я выбираю что-то новое в списке, отлично!
Затем я связать коробку источника данных ребенка со списком в списке в всеохватывающей DTO: cboChild.DataBindings.Add(new Binding("DataSource", bindingSource, "Children", true, DataSourceUpdateMode.OnPropertyChanged));
где дети это IList<ChildDTO>
на общепрограммной DTO.
Это также отлично работает, и как только я меняю родительский выбор, ведущий меняет список Children
на DTO, а значения, показанные в изменениях cboChildren, фантастичны, я слышу, как вы плачете (и я сделал сам)!
К сожалению, кажется, что если вы используете привязку данных для установки источника данных в ComboBox, события SelectedItemChanged, SelectedIndexChanged и SelectedValueChanged вообще не запускаются! Это означает, что привязка данных OnProperyChanged не будет работать для второго combobox. OnValidation действительно работает, но мне кажется немного странным, и мне было интересно, встречался ли кто-нибудь с этим раньше, и если бы они разработали, как заставить его работать?
Заранее спасибо
Stu