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; } }