private void FileListBox_Drop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop, true)) { string[] droppedFilePaths = e.Data.GetData(DataFormats.FileDrop, true) as string[]; foreach(string filemask in FileMask) { for (var i = 0; i < droppedFilePaths.Length; i++) { if (Path.GetExtension(droppedFilePaths[i]) == filemask) { ListBoxFileName filename = new ListBoxFileName(); filename.FileName = droppedFilePaths[i]; filename.FileIsSelected = false; //SelectedItems.Add(filename); } } } } DependencyObject child = e.OriginalSource as DependencyObject; var dataObj = e.Data as DataObject; var dragSource = e.Data.GetData("DragSource") as FileSelector; if (dragSource != null) { string dragFileSelectorSourceName = dragSource.Name.ToString(); string dragFileSelectorTargetName = Utils.FindParent<FileSelector>(child).Name.ToString(); string dragChannelControlsSourceName = Utils.FindParent<Views.LayerControls>(dragSource).Name.ToString(); string dragChannelControlsTargetName = Utils.FindParent<Views.LayerControls>(child).Name.ToString(); List<ListBoxFileName> FileNames = dataObj.GetData(typeof(List<ListBoxFileName>)) as List<ListBoxFileName>; if (dragChannelControlsSourceName != dragChannelControlsTargetName || dragFileSelectorSourceName != dragFileSelectorTargetName) { foreach (var Files in FileNames) { ListBoxFileName CopiedFileName = Files.Clone() as ListBoxFileName; CopiedFileName.FileIsSelected = false; SelectedItems.Add(CopiedFileName); } } } }
private void FileListBox_PreviewMouseMove(object sender, MouseEventArgs e) { if (_isMouseDown == true && IsDragGesture(e.GetPosition(e.Source as FrameworkElement))) { if (_dragged == null) return; if (e.LeftButton == MouseButtonState.Released) { _dragged = null; return; } List<ListBoxFileName> _draggedList = new List<ListBoxFileName>(); if (_dragged.IsSelected == true) { for (var i = 0; i < FileNameList.SelectedItems.Count; i++) { _draggedList.Add(FileNameList.SelectedItems[i] as ListBoxFileName); } var dragData = new DataObject(typeof(List<ListBoxFileName>), _draggedList); var dragSource = this; dragData.SetData("DragSource", dragSource); DragDrop.DoDragDrop(_dragged, dragData, DragDropEffects.All); } else { ListBoxFileName lb = _dragged.Content as ListBoxFileName; _draggedList.Add(lb); var dragData = new DataObject(typeof(List<ListBoxFileName>), _draggedList); var dragSource = this; dragData.SetData("DragSource", dragSource); DragDrop.DoDragDrop(_dragged, dragData, DragDropEffects.All); } } }