Почему BindingManagerBase удаляется из привязки - PullRequest
1 голос
/ 09 августа 2011

У меня очень странный случай .... У нас есть пользовательский элемент управления с текстовым полем, которое связано с источником привязки.

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 (view);

А теперь возникла проблема.Привязка больше не обновляется.Мы признали, что BindingManagerBase экземпляра привязки имеет значение null (мы не трогали привязку с момента ее создания) и свойство IsBinding привязки установлено в false.Так что же вызвало это?И как мы можем снова активировать привязку?

Спасибо за помощь, Eny

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

После включения LayoutControl.UseLocalBindingContext привязка работает нормально для меня.Это свойство скрыто и не может быть установлено в дизайнере.Вы можете установить его в коде.

Я нашел это решение в Центре поддержки DevExpress.

0 голосов
/ 30 сентября 2011

Я делаю похожую вещь, и я нашел другой обходной путь. Когда вы добавляете пользовательский элемент управления, резервное копирование его BindingContext где-то (у меня есть структура "StackedControl" для этого). Когда вы удалите его, восстановите его обратно. Похоже, это решает проблемы связывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...