为什么BindingManagerBase从绑定中删除

时间:2011-08-09 13:20:30

标签: c# winforms binding

我有一个非常奇怪的案例...... 我们有一个带有文本框的用户控件,该文本框绑定到绑定源。

BindingSource bindingSource = new BindingSource();
this.bindingSource.Add(this.viewMode);

this.textBox.DataBindings.Add(new Binding("EditValue", "Name", this.bindingSource, OnPropertyChanged));

我们在运行时创建此用户控件的实例,并将其添加到列表中,例如

MyUserControl view = new MyUserControl();
ourViews.Add(view);

如果我们在此视图上导航,则会将其添加到表单中:

MyUserControl view = (MyUserControl)ourViews(0);
this.Controls.Add(view);

此时(我们第一次这样做),绑定效果很好,值会在两个方向上更新。

之后,导航了一些其他视图,并从表单中删除了视图:

this.Controls.Clear();
OtherUserControlView view = (OtherUserControl)ourViews(1);
this.Controls.Add(view);

有些人,我们的旧视图再次被导航:     MyUserControl view =(MyUserControl)ourViews(0);     this.Controls.Add(视图);

现在有一个问题。绑定不再更新。我们认识到,绑定实例的BindingManagerBase为null(我们在创建之后没有触及绑定),并且绑定的IsBinding属性设置为false。是什么导致了这个?我们如何再次激活绑定?

感谢您的帮助, ENY

2 个答案:

答案 0 :(得分:2)

启用LayoutControl.UseLocalBindingContext后,绑定对我来说很好。 此属性是隐藏的,无法在设计器中设置。您可以在代码中进行设置。

我在DevExpress-Supportcenter中找到了这个解决方案。

答案 1 :(得分:0)

我正在做类似的事情,我发现了一个不同的解决方法。添加用户控件时,在某处备份其BindingContext(我有一个“StackedControl”结构)。删除后,将其还原。这似乎解决了绑定问题。