Wann lohnt sich die Verwendung einer BindingSource?

Ich denke, ich verstehe gut genug, was die BindingSource-Klasse tut - d. H. Eine Indirektionsebene zwischen einer Datenquelle und einem UI-Steuerelement. Es implementiert die IBindingList-Schnittstelle und bietet daher auch Unterstützung für das Sortieren. Und ich habe es oft genug verwendet, ohne zu viele Probleme. Aber ich frage mich, ob ich es öfter benutze, als ich sollte. Vielleicht würde ein Beispiel helfen.

Nehmen wir an, ich habe nur ein einfaches Textfeld in einem Formular (mit WinForms) und möchte dieses Textfeld an eine einfache Eigenschaft in einer Klasse binden, die eine Zeichenfolge zurückgibt. Lohnt es sich in dieser Situation, eine BindingSource zu verwenden?

Jetzt nehmen wir an, ich habe ein Raster in meinem Formular und möchte es an eine Datentabelle binden. Soll ich jetzt eine BindingSource verwenden?

Im letzteren Fall würde ich wahrscheinlichnichenn Sie eine BindingSource als DataTable verwenden, bietet das, was ich erfassen kann, die gleiche Funktionalität wie die BindingSource. Die DataTable löst die richtigen Ereignisse aus, wenn eine Zeile hinzugefügt, gelöscht usw. wird, sodass das Raster automatisch aktualisiert wird.

Aber im ersten Fall, wenn das Textfeld an einen String gebunden ist, müsste die Klasse, die die String-Eigenschaft enthält, wahrscheinlich INotifyPropertyChanged implementieren, damit sie das PropertyChanged-Ereignis auslösen kann, wenn sich der String ändert. Ich würde eine BindingSource verwenden, damit diese PropertyChanged-Ereignisse abgehört werden und das Textfeld automatisch aktualisiert wird, wenn sich die Zeichenfolge ändert.

Wie hört sich das bisher an? Ich habe immer noch das Gefühl, dass es eine Lücke in meinem Verständnis gibt, die mich davon abhält, das ganze Bild zu sehen. Dies war bisher eine ziemlich vage Frage, daher werde ich versuchen, einige spezifischere Fragen zu stellen - im Idealfall beziehen sich die Antworten auf die obigen Beispiele oder ähnliches ...

(1) Lohnt es sich, in einem der obigen Beispiele eine BindingSource zu verwenden?

(2) Es scheint, dass Entwickler einfach davon ausgehen, dass die DataTable-Klasse das Richtige tut, um PropertyChanged-Ereignisse zur richtigen Zeit auszulösen. Woher weiß man, ob eine Datenquelle dazu in der Lage ist? Gibt es eine bestimmte Schnittstelle, die eine Datenquelle implementieren sollte, damit Entwickler dieses Verhalten annehmen können?

(3) Ist es wichtig, an welches Steuerelement gebunden wird, wenn überlegt wird, ob eine BindingSource verwendet werden soll oder nicht? Oder soll nur die Datenquelle die Entscheidung beeinflussen? Möglicherweise lautet die Antwort (und dies scheint logisch genug zu sein): Das Steuerelement muss intelligent genug sein, um die PropertyChanged-Ereignisse abzuhören. Andernfalls ist eine BindingSource erforderlich. Wie erkennt man also, ob der Control dazu in der Lage ist? Gibt es wieder eine bestimmte Schnittstelle, nach der Entwickler suchen können, die das Control implementieren muss?

Es ist diese Verwirrung, die in der Vergangenheit zu mir geführt hatimme mit einer BindingSource. Aber ich würde gerne besser verstehen, wann man einen benutzt, so dass ich das nur dann tue, wenn es nötig ist.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage