Beispiel #1
0
        void sourceCollection_CollectionChanged(object sender,
                                                NotifyCollectionChangedEventArgs e)
        {
            cyclicAccessRecord.RecordStepIn(AccessContext.CollectionChanged, sender, this.Name);

            if (e.Action == NotifyCollectionChangedAction.Reset)
            {
                UnhookAllItems();
            }
            else if (e.OldItems != null && TraversalOptions.TracksCollectionItems) //OldItems is null for Reset
            {
                RemoveAllItemListeners(e.OldItems);
            }

            if (e.NewItems != null && TraversalOptions.TracksCollectionItems)
            {
                AttachAllItemListeners(e.NewItems);
            }

            RaiseSourceChanged();
            cyclicAccessRecord.StepOut();
        }