private void OnInputChanged(object sender, NotifyCollectionChangedEventArgs e) { switch (e.Action) { case NotifyCollectionChangedAction.Add: AddItems(e.NewItems<IDataObject>()); break; case NotifyCollectionChangedAction.Remove: RemoveItems(e.OldItems<IDataObject>()); break; case NotifyCollectionChangedAction.Reset: var currentItems = sender as ReadOnlyObservableCollection<IDataObject>; ClearOutput(); if (currentItems == null) break; AddItems(currentItems); break; case NotifyCollectionChangedAction.Replace: RemoveItems(e.OldItems<IDataObject>()); AddItems(e.NewItems<IDataObject>()); break; default: break; } }