Powiadomienie o zmianie w powiązaniu danych w formularzach systemu Windows

Jednym z najważniejszych pojęć związanych z powiązaniem danych formularzy systemu Windows jest powiadomienie o zmianie. Aby zapewnić, że źródło danych i powiązane kontrolki zawsze mają najnowsze dane, należy dodać powiadomienie o zmianie powiązania danych. W szczególności chcesz mieć pewność, że powiązane kontrolki są powiadamiane o zmianach wprowadzonych w ich źródle danych, a źródło danych jest powiadamiane o zmianach wprowadzonych we powiązanych właściwościach kontrolki.

Istnieją różne rodzaje powiadomień o zmianie w zależności od rodzaju powiązania danych:

  • Proste powiązanie, w którym jedna właściwość kontrolki jest powiązana z pojedynczym wystąpieniem obiektu.

  • Powiązanie oparte na liście, które może zawierać jedną właściwość kontrolki powiązaną z właściwością elementu na liście lub właściwość kontrolki powiązaną z listą obiektów.

Ponadto w przypadku tworzenia kontrolek formularzy systemu Windows, które mają być używane do tworzenia powiązania danych, należy zastosować wzorzec PropertyNameChanged do kontrolek, aby zmiany w powiązanej właściwości kontrolki zostały propagowane do źródła danych.

Powiadomienie o zmianie powiązania prostego

W przypadku prostego powiązania obiekty biznesowe muszą podać powiadomienie o zmianie, gdy wartość powiązanej właściwości ulegnie zmianie. Można to zrobić, ujawniając zdarzenie PropertyNameChanged dla każdej właściwości obiektu biznesowego i powiązanie obiektu biznesowego z kontrolkami BindingSource lub preferowaną metodą, w której obiekt biznesowy implementuje INotifyPropertyChangedPropertyChanged interfejs i zgłasza zdarzenie, gdy wartość właściwości ulegnie zmianie. Aby uzyskać więcej informacji, zobacz How to: Implement the INotifyPropertyChanged Interface (Instrukcje: implementowanie interfejsu INotifyPropertyChanged). W przypadku używania obiektów implementujących INotifyPropertyChanged interfejs nie trzeba używać BindingSource elementu , aby powiązać obiekt z kontrolką, ale użycie elementu BindingSource jest zalecane.

Powiadomienie o zmianie powiązania opartego na liście

Formularze systemu Windows zależą od listy powiązanej w celu zapewnienia zmiany właściwości (zmiany wartości właściwości elementu listy) i zmiany listy (element jest usuwany lub dodawany do listy) informacje dotyczące powiązanych kontrolek. W związku z tym listy używane do powiązania danych muszą implementować IBindingListelement , który udostępnia oba typy powiadomień o zmianie. Jest BindingList<T> to ogólna implementacja IBindingList i jest przeznaczona do użycia z powiązaniem danych windows Forms. Można utworzyć obiekt BindingList<T> zawierający typ obiektu biznesowego, który implementuje, a lista automatycznie konwertuje INotifyPropertyChangedPropertyChanged zdarzenia na ListChanged zdarzenia. Jeśli lista powiązana nie jest wartością IBindingList, należy powiązać listę obiektów z kontrolkami Windows Forms przy użyciu BindingSource składnika . Składnik BindingSource zapewni konwersję właściwości na listę podobną do konwersji .BindingList<T> Aby uzyskać więcej informacji, zobacz How to: Raise Change Notifications Using a BindingSource and the INotifyPropertyChanged Interface (Jak zgłaszać powiadomienia o zmianie przy użyciu elementu BindingSource) i INotifyPropertyChanged Interface (Interfejs INotifyPropertyChanged).

Powiadomienie o zmianie kontrolek niestandardowych

Na koniec po stronie kontrolki należy uwidocznić zdarzenie PropertyNameChanged dla każdej właściwości, która ma być powiązana z danymi. Zmiany właściwości kontrolki są następnie propagowane do powiązanego źródła danych. Aby uzyskać więcej informacji, zobacz How to: Apply the PropertyNameChanged Pattern (Instrukcje: stosowanie wzorca PropertyNameChanged)

Zobacz też