Я знаю, как работает привязка в WPF, но то же самое в Winforms кажется немного неясным.
При привязке DataTable к нескольким элементам управления я столкнулся с аномалиями, когда привязка всей формы, казалось, переставала работать. . Поэтому я попробовал несколько разных способов привязки:
Теперь, чтобы поддерживать зависимости между значениями, я присоединил обработчики событий ColumnChanged и RowChanged к DataTable. Когда я изменяю строку данных в этих обратных вызовах, все становится странно нестабильным.
Когда я удаляю обработчики событий изменения, все вышеперечисленные методы, похоже, работают, в том числе при использовании режима DataSourceUpdateMode.OnValidation.
Итак, вопросы:
равны ли методы связывания? Я подозреваю, что BindingSource обеспечивает некоторую дополнительную ценность.
изменения в базовых данных, сделанные в обработчиках ColumnChanged или RowChanged, каким-то образом портят привязку? Я ожидал, что эти события дадут мне возможность использовать DataTable в качестве «наблюдаемой модели», чтобы я мог определять, когда что-то меняется в данных.
Я знаю, как работает привязка в WPF, но то же самое в Winforms кажется немного неясным. При привязке DataTable к нескольким элементам управления я столкнулся с аномалиями, когда привязка всей формы, казалось, переставала работать. . Поэтому я попробовал несколько разных способов привязки: [list] [*]привязка к таблице данных [code]comboBox.DataBindings.Add(new Binding("EditValue", dTable, "FieldName", true, DataSourceUpdateMode.OnPropertyChanged));[/code]
[*]привязка к набору данных [code]comboBox.DataBindings.Add(new Binding("EditValue", dsData, "TableName.FieldName", true, DataSourceUpdateMode.OnPropertyChanged));[/code]
[*]привязка к просмотру данных [code]comboBox.DataBindings.Add(new Binding("EditValue", dsData.Tables["Table"].DefaultView, "FieldName", true, DataSourceUpdateMode.OnPropertyChanged));[/code]
[*]привязка к промежуточному BindingSource [code]BindingSource bs = new BindingSource(); bs.DataSource = dsData.Tables["Table"]; comboBox.DataBindings.Add(new Binding("EditValue", bs, "FieldName", true, DataSourceUpdateMode.OnPropertyChanged));[/code]
[/list] Теперь, чтобы поддерживать зависимости между значениями, я присоединил обработчики событий ColumnChanged и RowChanged к DataTable. Когда я изменяю строку данных в этих обратных вызовах, все становится странно нестабильным. Когда я удаляю обработчики событий изменения, все вышеперечисленные методы, похоже, работают, в том числе при использовании режима DataSourceUpdateMode.OnValidation. Итак, вопросы: [list] [*]равны ли методы связывания? Я подозреваю, что BindingSource обеспечивает некоторую дополнительную ценность.
[*]изменения в базовых данных, сделанные в обработчиках ColumnChanged или RowChanged, каким-то образом портят привязку? Я ожидал, что эти события дадут мне возможность использовать DataTable в качестве «наблюдаемой модели», чтобы я мог определять, когда что-то меняется в данных.