Heim >Backend-Entwicklung >C++ >Wie kann ich eine ObservableCollection erstellen, die Änderungen in ihren Elementeigenschaften überwacht?
Problembeschreibung
Stellen Sie sich eine ObservableCollection vor, bei der die Elemente INotifyPropertyChanged implementieren und die Sammlung selbst diese Elemente auf Änderungen überwacht. Obwohl ObservableCollection
Lösung
ObservableCollectionEx-Klasse
Die vorgeschlagene Lösung führt ObservableCollectionEx
Nutzung
ObservableCollectionEx
<code class="language-csharp">ObservableCollectionEx<Element> collection = new ObservableCollectionEx<Element>(); ((INotifyPropertyChanged)collection).PropertyChanged += (x, y) => ReactToChange();</code>
Notizen
Obwohl diese Implementierung das PropertyChanged-Ereignis der Sammlung auslöst, wenn sich die Eigenschaft eines Elements ändert, kann dies verwirrend sein. Daher kann speziell für solche Änderungen ein zusätzliches Ereignis eingeführt werden.
Darüber hinaus macht die ObservableCollection
<code class="language-csharp">((INotifyPropertyChanged)collection).PropertyChanged += (x, y) => ReactToChange();</code>
Beachten Sie, dass zum Abbestellen von PropertyChanged der Ereignishandler auf null gesetzt werden muss:
<code class="language-csharp">collection.PropertyChanged -= (s, e) => { Trace.WriteLine("Changed " + e.PropertyName); };</code>
Das obige ist der detaillierte Inhalt vonWie kann ich eine ObservableCollection erstellen, die Änderungen in ihren Elementeigenschaften überwacht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!