Änderungsbenachrichtigung in der Windows Forms-Datenbindung

Eins der wichtigsten Konzepte der Windows Forms-Datenbindung ist die Änderungsbenachrichtigung. Um sicherzustellen, dass Ihre Datenquelle und gebundenen Steuerelemente immer die neuesten Daten enthalten, müssen Sie die Änderungsbenachrichtigung für die Datenbindung hinzufügen. Sie sollten insbesondere sicherstellen, dass gebundene Steuerelemente über Änderungen benachrichtigt werden, die an ihrer Datenquelle vorgenommen wurden. Die Datenquelle wird über Änderungen benachrichtigt, die an den gebundenen Eigenschaften eines Steuerelements vorgenommen wurden.

Je nach Art der Datenbindung gibt es unterschiedliche Arten von Änderungsbenachrichtigungen:

  • Einfache Bindung, bei der eine einzelne Steuerelementeigenschaft an eine einzelne Instanz eines Objekts gebunden ist

  • Listenbasierte Bindung, die eine einzelne Steuerelementeigenschaft enthalten kann, die an die Eigenschaft eines Elements in einer Liste gebunden ist, oder eine Steuerelementeigenschaft, die an eine Liste von Objekten gebunden ist

Wenn Sie Windows Forms-Steuerelemente erstellen, die Sie für die Datenbindung verwenden möchten, müssen Sie außerdem das PropertyNameChanged-Muster auf die Steuerelemente anwenden, damit Änderungen an der gebundenen Eigenschaft eines Steuerelements an die Datenquelle weitergegeben werden.

Änderungsbenachrichtigung für einfache Bindung

Bei der einfachen Bindung müssen Geschäftsobjekte Änderungsbenachrichtigungen bereitstellen, wenn sich der Wert einer gebundenen Eigenschaft ändert. Dazu können Sie ein PropertyNameChanged-Ereignis für jede Eigenschaft Ihres Geschäftsobjekts verfügbar machen und das Geschäftsobjekt an Steuerelemente mit BindingSource oder die bevorzugte Methode binden, in der Ihr Geschäftsobjekt die INotifyPropertyChanged-Schnittstelle implementiert und ein PropertyChanged-Ereignis auslöst, wenn sich der Wert einer Eigenschaft ändert. Weitere Informationen finden Sie unter Vorgehensweise: Implementieren der INotifyPropertyChanged-Schnittstelle. Wenn Sie Objekte verwenden, die die INotifyPropertyChanged-Schnittstelle implementieren, müssen Sie nicht BindingSource verwenden, um das Objekt an ein Steuerelement zu binden. Stattdessen wird die Verwendung von BindingSource empfohlen.

Änderungsbenachrichtigung für listenbasierte Bindung

Windows Forms benötigt eine gebundene Liste, um Informationen zu Eigenschaftsänderungen (Änderung des Werts einer Listenelementeigenschaft) und Listenänderungen (Löschen eines Elements oder Hinzufügen eines Elements zur Liste) für gebundene Steuerelemente bereitzustellen. Daher müssen für die Datenbindung verwendete Listen IBindingList implementieren. Dadurch werden beide Arten von Änderungsbenachrichtigungen bereitgestellt. BindingList<T> ist eine generische Implementierung von IBindingList und für die Verwendung mit der Windows Forms-Datenbindung konzipiert. Sie können ein BindingList<T>-Element erstellen, das einen Geschäftsobjekttyp enthält, der INotifyPropertyChanged implementiert. Die Liste konvertiert die PropertyChanged-Ereignisse automatisch in ListChanged-Ereignisse. Wenn es sich bei der gebundenen Liste nicht um ein IBindingList-Element handelt, müssen Sie die Liste der Objekte mithilfe der BindingSource-Komponente an Windows Forms-Steuerelemente binden. Die BindingSource-Komponente ermöglicht ähnlich wie BindingList<T> eine Konvertierung von Eigenschaften in Listen. Weitere Informationen finden Sie unter Vorgehensweise: Auslösen von Änderungsbenachrichtigungen mithilfe von BindingSource und der INotifyPropertyChanged-Schnittstelle.

Änderungsbenachrichtigung für benutzerdefinierte Steuerelemente

Schließlich müssen Sie aufseiten des Steuerelements ein PropertyNameChanged-Ereignis für jede Eigenschaft verfügbar machen, die an Daten gebunden werden soll. Die Änderungen an der Steuerelementeigenschaft werden dann an die gebundene Datenquelle weitergegeben. Weitere Informationen finden Sie unter Vorgehensweise: Anwenden des PropertyNameChanged-Musters.

Weitere Informationen