我在Winforms应用程序中使用数据绑定将UI元素连接到基础对象。我的UI中有几个ComboBoxes
,每个都与该类的不同属性有关。以下面的简化代码为例:
INotifyPropertyChange
class MyObject : INotifyPropertyChange
{
// Custom logic in setters calls OnPropertyChanged
public int Property1 { get; set; }
public string Property2 { get; set; }
}
BindingSource MyDataSource = new BindingSource(this.components);
MyDataSource.Add(instanceOfMyObject);
Binding binding1 = new Binding("SelectedIndex", MyDataSource, "Property1",
false, DataSourceUpdateMode.OnPropertyChanged);
binding1.Format += FormatForBinding1();
comboBox1.DataBindings.Add(binding1);
Binding binding2 = new Binding("SelectedIndex", MyDataSource, "Property2"
false, DataSourceUpdateMode.OnPropertyChanged);
binding2.Format += FormatForBinding2();
comboBox2.DataBindings.Add(binding2);
我的问题是,当comboBox2.SelectedIndex
更改时,两个Format
处理函数都被调用,而当我只希望调用FormatForBinding2()
时,这是不希望的。有办法解决吗?我对绑定有误解吗,尽管控件不同,但我不能拥有具有相同属性名称和相同数据源的多个绑定?
答案 0 :(得分:0)
我认为问题在于在Format
处理程序中执行的代码。 Format
处理程序仅应用于执行其名称所暗示的操作-设置值的格式。我发现,添加额外的逻辑可能会导致不良行为。需要考虑的一件事是,与Format
处理程序一起,还包括用于所需ComboBox的SelectedIndexChanged
或SelectedValueChanged
处理程序,并在其中执行其他逻辑。