我有一个非常奇怪的案例...... 我们有一个带有文本框的用户控件,该文本框绑定到绑定源。
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
答案 0 :(得分:2)
启用LayoutControl.UseLocalBindingContext后,绑定对我来说很好。 此属性是隐藏的,无法在设计器中设置。您可以在代码中进行设置。
我在DevExpress-Supportcenter中找到了这个解决方案。
答案 1 :(得分:0)
我正在做类似的事情,我发现了一个不同的解决方法。添加用户控件时,在某处备份其BindingContext(我有一个“StackedControl”结构)。删除后,将其还原。这似乎解决了绑定问题。