private void DropCopy(IDropInfo dropInfo) { Action <ISound, int> insertSoundAction; if (ReferenceEquals(dropInfo.TargetCollection, SoundService.ActiveSounds)) { insertSoundAction = (soundToInsert, i) => { SoundService.Add(soundToInsert); }; } else { insertSoundAction = (soundToInsert, i) => { ObservableCollection <ISound> targetCollection = dropInfo.TargetCollection as ObservableCollection <ISound>; targetCollection?.Insert(i, soundToInsert); }; } ISound sound = dropInfo.Data as ISound; IEnumerable <ISound> sounds = dropInfo.Data as IEnumerable <ISound>; DataObject dataObject = dropInfo.Data as DataObject; if (sound != null) { DropSounds(insertSoundAction, dropInfo.InsertIndex, sound); } else if (sounds != null) { DropSounds(insertSoundAction, dropInfo.InsertIndex, sounds.ToArray()); } else if (dataObject != null) { DropFiles(insertSoundAction, dropInfo.InsertIndex, dataObject); } }