Welche .Net-Sammlung zum gleichzeitigen Hinzufügen mehrerer Objekte und zur Benachrichtigung?
War angesichts der System.Collections.ObjectModel ObservableCollection<T>
Klasse. Dieses ist merkwürdig, weil
- es hat eine Add-Methode nimmt eine Element nur. Keine AddRange oder gleichwertig.
- die Meldung Ereignis-Argumente hat eine NewItems Eigenschaft, die eine IList (von Objekten.. nicht T)
Meiner müssen hier hinzufügen, um einen Stapel von Gegenständen in einer Sammlung und der Hörer bekommt auch die batch als Teil der Benachrichtigung. Bin ich etwas fehlt mit ObservableCollection ? Gibt es eine andere Klasse, erfüllt meine Skillung?
Update: will nicht roll meine eigene so weit wie möglich. Ich würde build-in hinzufügen/entfernen/ändern etc.. eine ganze Menge Zeug.
InformationsquelleAutor der Frage Gishu | 2008-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es, dass die
INotifyCollectionChanged
- Schnittstelle ermöglicht das aktualisieren, wenn mehrere Elemente Hinzugefügt wurden, so bin ich nicht sicher, warumObservableCollection<T>
keineAddRange
. Sie könnten eine extension-Methode fürAddRange
aber dazu führen würde, dass ein Ereignis für jedes Element, das Hinzugefügt wird. Wenn das nicht akzeptabel ist, sollten Sie in der Lage sein, um Erben vonObservableCollection<T>
wie folgt:InformationsquelleAutor der Antwort fryguybob
Nun, die Idee ist dieselbe wie die der fryguybob - irgendwie komisch, dass die ObservableCollection ist irgendwie halb fertig. Die event-Argumente für dieses Ding gar nicht, dass Generika verwendet werden.. was mich ein IList (das ist so.. gestern 🙂
Getestet Snippet folgt...
InformationsquelleAutor der Antwort Gishu
Ist nicht nur
System.Collections.ObjectModel.Collection<T>
eine gute Wette, aber in der Hilfe docs gibt es ein Beispielwie zum überschreiben Sie die verschiedenen Methoden geschützt, um Benachrichtigung erhalten. (Scrollen Sie nach unten zu B. 2.)InformationsquelleAutor der Antwort Ryan Lundy
Wenn Sie eine der oben genannten Implementierungen, senden Sie eine add range Befehl, und binden die observablecolletion zu einem listview-Steuerelement, erhalten Sie diese fiesen Fehler.
Die Implementierung, die ich gegangen mit verwendet, das Reset-Ereignis ist mehr gleichmäßig umgesetzt, um das WPF-framework:
InformationsquelleAutor der Antwort Sam Saffron
Ich habe gesehen, diese Art von Frage viele Male, und ich Frage mich, warum sogar Microsoft ist die Förderung der ObservableCollection-überall dort, wo sonst gibt es eine bessere Sammlung bereits zur Verfügung das ist..
Das Ihnen erlaubt, um Benachrichtigungen zu deaktivieren und tun, Massen-Operationen und schalten Sie dann die Benachrichtigungen.
InformationsquelleAutor der Antwort Akash Kava
Wenn Sie wollen, sind zu Erben eine Sammlung irgendeiner Art, du bist wahrscheinlich besser dran, Erben von System.Sammlungen.ObjectModel.Sammlung, weil es bietet virtuellen Methoden überschreiben. Du musst shadow Methoden aus der Liste, wenn Sie diesen Weg gehen.
Ich bin mir nicht bewusst, irgendwelche integrierten Sammlungen, die diese Funktionalität bieten, aber ich würde begrüßen, die korrigiert werden 🙂
InformationsquelleAutor der Antwort David Mohundro
Erben von List<T> und überschreiben der Add () - und AddRange () - Methode, um ein Ereignis auszulösen?
InformationsquelleAutor der Antwort Joel Coehoorn
Andere Lösung, die ähnlich ist zu der CollectionView Muster:
InformationsquelleAutor der Antwort Mo0gles
Werfen Sie einen Blick auf Observable collection mit AddRange, RemoveRange und Ersetzen Spektrum Methoden in C# und in VB.
In VB: INotifyCollectionChanging Umsetzung.
InformationsquelleAutor der Antwort Shimmy
Für schnelles hinzufügen, die Sie verwenden könnten:
InformationsquelleAutor der Antwort Boris
Erweiterung Methode Mann ist die Rettung!
InformationsquelleAutor der Antwort Will