public void StartDragDrop(VirtualFileDataObject data) { if (Aggregator != null) { Thread t = new Thread(() => Aggregator.GetEvent <StartProgress>().Publish()); t.IsBackground = true; t.Start(); } }
public void DoDragDrop(List <IEntry> entries) { VirtualFileDataObject virtualFileDataObject = new VirtualFileDataObject(StartDragDrop, EndDragDrop); var files = new List <VirtualFileDataObject.FileDescriptor>(); string currentDir = Utils.CurrentWindow.CurrentDir; foreach (var entry in entries) { if (entry is FileEntry file) { PopulateFile(files, file, currentDir); } else if (entry is FolderEntry folder) { PopulateFiles(files, folder, currentDir); } } //Show dialog only when there are more than 5 items moved. Console.WriteLine("Beginning with {0} files", files.Count); virtualFileDataObject.SetData(files); if (files.Count > 10) { Aggregator = new EventAggregator(); Aggregator.GetEvent <StartProgress>().Subscribe(() => { var pms = new DialogParameters(); pms.Add("ProgressAction", new Action <ProgressDialogViewModel>(dialog => { Progress = dialog; })); Utils.ShowDialog("ProgressDialog", pms); }, ThreadOption.UIThread); } try { VirtualFileDataObject.DoDragDrop(Control, virtualFileDataObject, DragDropEffects.Copy); } catch (COMException) { Console.WriteLine("Failed Drag-Drop."); } Console.WriteLine("Finished Drag-Drop operation setup"); }
public void EndDragDrop(VirtualFileDataObject data) { }