为什么BindingManagerBase从绑定中移除

本文关键字:绑定 BindingManagerBase 为什么 | 更新日期: 2023-09-27 18:04:50

我有一个很奇怪的情况....我们有一个带有文本框的用户控件,它被绑定到一个绑定源。

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

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

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视图= (MyUserControl)ourViews(0);

this.Controls.Add(查看);

现在有一个问题。绑定不再更新。我们发现,绑定实例的BindingManagerBase是空的(自绑定创建以来我们没有碰过它),绑定的IsBinding属性被设置为false。那么是什么导致了这一切呢?我们怎样才能再次激活绑定呢?

谢谢你的帮助,羡慕

为什么BindingManagerBase从绑定中移除

启用LayoutControl后。UseLocalBindingContext这个绑定对我来说很好。此属性是隐藏的,不能在设计器中设置。您可以在代码中设置它。

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

我正在做类似的事情,我发现了一个不同的解决方案。当你添加用户控件时,在某个地方备份它的BindingContext(我有一个"StackedControl"结构)。当你移除它时,将其恢复。这似乎解决了绑定问题。