非常に奇妙なケースがあります。 バインド元にバインドされたテキストボックスを持つユーザーコントロールがあります。BindingManagerBaseがバインディングから削除される理由
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);
は、それがフォームに追加されます:この時点(私たちはこれを行う1回目)で
MyUserControl view = (MyUserControl)ourViews(0);
this.Controls.Add(view);
は、結合作品だけでなく、値がで更新されます双方向。
その後、他のいくつかのビューがナビゲート取得し、ビューには、フォームから削除されます:
this.Controls.Clear();
OtherUserControlView view = (OtherUserControl)ourViews(1);
this.Controls.Add(view);
そしてsomewhen、私たちの古いビューが再びナビゲートます: MyUserControlビュー=(MyUserControl)ourViews(0); this.Controls.Add(view);
そして今問題があります。バインディングはもう更新されません。バインディングインスタンスのBindingManagerBaseはnull(バインディングが作成されてからバインディングには触れなかった)であり、バインディングのIsBindingプロパティがfalseに設定されていることを認識しました。それで何が起こったのですか?もう一度バインディングを有効にする方法は?助けのための
おかげで、 ENY
ありがとうございます。あなたのソリューションは、毎回バインディングのコンテキストを手動で設定するほうがずっといいです。 – Enyra
私はこのバグを2回目にしていました。なぜなら、純粋な挫折の最初の5時間を忘れていたからです。私を2回騙す... –