将实体属性绑定到组合框无法正常工作

时间:2018-08-03 06:09:13

标签: c# winforms data-binding bindingsource

我有一个实体,例如:

public class Entity
{
    public Enum1 FirstEnum { get; set; }
    public Enum2 SecondEnum { get; set; }
}

此实体绑定到BindingSource上,后者依次绑定了表单上的控件;例如:

this.cboSecondEnum.DataBindings.Add(new Binding("SelectedValue", this.bindingSource, "SecondEnum", true, DataSourceUpdateMode.OnPropertyChanged, Enum2.Default));

为了在用户更改ComboBox中的值时更改一些细节,我有:

private void cboSecondEnum_SelectedValueChanged(object sender, EventArgs e)
{
    if (cboSecondEnum.SelectedValue == null)
        return;

    var item = (Enum2)cboSecondEnum.SelectedValue;

    //Do something...
}

到目前为止,当用户以表格形式输入数据并将实体正确保存在数据库中时,上述方法可以正常工作。

但是,问题出在加载相同的实体时。设置绑定源后,如下所示:

this.bindingSource.DataSource = myEntity;

在绑定控件期间的某个时刻引发了SelectedValueChange事件,而SelectedValue仍未基于实体的属性进行设置。这仅发生在ComboBox控件上。其他数据绑定控件将按预期工作。

当用户更改某些其他控件(并且数据源通过绑定源自动更新)时,所有控件都将刷新,此时ComboBox值反映了实体属性的实际值

预期的行为是,在设置ComboBox的{​​{1}}属性时正确设置了DataSource值。

我在这里错过了什么吗?这是WinForms项目中数据绑定的问题吗?

0 个答案:

没有答案