Simpelantwort: Einfach auf die Elemente der Liste zugreifen:
C#-Quelltext
1:
| ls[0].PropertyChanged += ... |
Oder, wenn strikt nur Elemente, die in der Liste sind, "beobachtet" werden sollen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| static void Main(string[] args) { var ls = new ObservableCollection<Foo>(); ls.CollectionChanged += ls_CollectionChanged;
Console.ReadLine(); }
static void ls_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.Action == NotifyCollectionChangedAction.Add || e.Action == NotifyCollectionChangedAction.Replace) foreach(Foo element in e.NewItems) element.PropertyChanged += elementChanged;
if (e.Action == NotifyCollectionChangedAction.Remove || e.Action == NotifyCollectionChangedAction.Reset || e.Action == NotifyCollectionChangedAction.Replace) foreach (Foo element in e.OldItems) element.PropertyChanged -= elementChanged; } |
Auf die weise wird auf die Änderungen "gehorcht", sobald ein Element der Liste hinzugefügt wird und das nicht mehr, sobald es daraus entfernt wird.
Grüße,
Christian
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".