2010-01-04 2 views

Antwort

14

Versuchen ObservableCollection<T> es unterstützt INotifyCollectionChanged, die Ereignisse für jeden Aspekt der Sammlungsänderung liefert.

Namespace: System.Collections.ObjectModel

Montage: WindowsBase.dll

+5

Es bewegt sich in system.dll in 4.0, btw – Will

+3

Für .NET 2 gibt es auch BindingList (http://msdn.microsoft.com/en-us/library/ms132679.aspx), die leider nicht haben diese feinkörnige Event-Unterstützung. – Joey

+0

Ich ging tatsächlich mit der BindingList . ObservableCollection unterstützt Compact Framework nicht, so dass ich das nicht verwenden konnte (mein Nachteil, das nicht erwähnt zu haben). Danke für die Antworten. (Johannes, ich habe 30 Punkte für einige Ihrer Antworten gewählt, um Ihren Kommentar zu "bezahlen"). Nochmals vielen Dank! – Vaccano

7

ObservableCollection<T> ist so nah wie Sie im Rahmen zu bekommen.

OTOH, es ist nicht so schwer, dies zu tun. Erstellen Sie einfach eine Klasse, die IList implementiert und eine interne List < T> Instanz umschließt. Sie können Ihre Ereignisse einfach nach Bedarf auslösen.

+0

Oder leiten Sie aus Collection und überschreiben Sie InsertItem/RemoveItem, um auch Ereignisse zu posten. – yoyo

0

Sie können auch eine benutzerdefinierte leichte Verpackung schreiben, wenn Sie die Geschwindigkeit auf Kosten der Flexibilität optimieren möchten.

0

Nicht, dass ich weiß, aber das wäre ziemlich einfach zu implementieren, Sie können nur Ihre eigenen hinzufügen und entfernen Methoden, oder Sie könnten einen Indexer verwenden. Dann können Sie in Bezug auf Ereignisse tun, was Sie wollen.

1

Sie immer eine private List<...> machen könnte und Zugang dann durch eine Methode:

private List<string> listOfStrings = new List<string>; 

public void AddToList(string s) 
{ 
    // Do your work 
    listOfStrings.Add(s); 
} 

oder man könnte es Ereignisse überlasten und fügen Sie wie Sie wollen.

Verwandte Themen