Laden...

INotifyPropertyChange vs. INotifyCollectionChanged

Erstellt von ET1 vor 2 Jahren Letzter Beitrag vor 2 Jahren 380 Views
E
ET1 Themenstarter:in
4 Beiträge seit 2021
vor 2 Jahren
INotifyPropertyChange vs. INotifyCollectionChanged

Ich bin neu in WPF und beschäftige mich seit einiger Zeit mit dem Databinding.habe dazu einige Fachbücher gewälzt und
Beispiele nachvollzogen.
Zu einigen Fragen durchsuche ich seit Tagen das gesammte Web und kann nichts passendes finden:
Z.B. In einem Window wird die DataTable, die an ein DataGrid gebunden ist, geändert.
Es werden nicht die Items geändert, sondern die gesammte DataTable.
Mir ist dabei nicht so richtig klar, welches ChangeEvent ich verwenden soll:
INotifyPropertyChange oder INotifyCollectionChange?
Alle gefundenen Beispiele beziehen sich auf PropertyChange für Einzeleigenschaften
und CollectionChange für die Items innerhalb einer Collection

5.657 Beiträge seit 2006
vor 2 Jahren

Alle gefundenen Beispiele beziehen sich auf PropertyChange für Einzeleigenschaften und CollectionChange für die Items innerhalb einer Collection

Genau so ist es.

Alles Wichtige dazu findest du u.a. in [Artikel] MVVM und DataBinding

Weeks of programming can save you hours of planning

E
ET1 Themenstarter:in
4 Beiträge seit 2021
vor 2 Jahren

Ich habe inzwischen selbst rausgefunden, dass INotifyPropertyChange reicht, wenn sich nicht die Items ändern, sondern die komplette DataTable.
Es ist manchmal etwas verwirrend für einen Neuling, was genau gemeint ist.
In allen Beschreibungen steht immer nur: Wenn man ein Objekt binden möchte welches Items enthält nehme INotifyCollectionChange.
Keine einzige Anleitung, auch nicht der Artikel MVVM enthält dahingehend eine eindeutige Antwort.
Ein kleiner Hinweis in dieser Richtung hätte mir jedoch etliche Stunden Probierens mit dem falschen Event gespart.

5.657 Beiträge seit 2006
vor 2 Jahren

Keine einzige Anleitung, auch nicht der Artikel MVVM enthält dahingehend eine eindeutige Antwort.
Ein kleiner Hinweis in dieser Richtung hätte mir jedoch etliche Stunden Probierens mit dem falschen Event gespart.

Im Artikel steht doch:

2.4 ViewModel-Auflistungen
Eine eigene Implementierung der INotifyCollectionChanged-Schnittstelle kann man sich übrigens sparen, denn der Framework enthält für diesen Zweck bereits die ObservableCollection-Klasse.

Und in der Doku dazu steht gleich als erstes:

Notifies listeners of dynamic changes, such as when an item is added and removed or the whole list is cleared.

Manchmal erspart Lesen auch etliche Stunden Probieren 🙂

Weeks of programming can save you hours of planning