private void UserControl_DragEnter(object sender, DragEventArgs e) { var plots = PlotClipboardData.FromDataObject(e.Data); var targetDeviceId = Model?.Device?.DeviceId; if (targetDeviceId != null && plots.All(p => p.DeviceId == targetDeviceId)) { var isMove = (e.KeyStates & DragDropKeyStates.ShiftKey) != 0; e.Effects = isMove ? DragDropEffects.Move : DragDropEffects.Copy; e.Handled = true; return; } e.Effects = DragDropEffects.None; e.Handled = true; }
private void UserControl_Drop(object sender, DragEventArgs e) { var sources = PlotClipboardData.FromDataObject(e.Data).ToArray(); if (sources.Length > 0) { var isMove = (e.KeyStates & DragDropKeyStates.ShiftKey) != 0; try { foreach (var source in sources) { Model?.CopyPlotFromAsync(source.DeviceId, source.PlotId, isMove).DoNotWait(); } } catch (RPlotManagerException ex) { MessageBox.Show(ex.Message, string.Empty, MessageBoxButton.OK, MessageBoxImage.Error); } catch (OperationCanceledException) { } e.Handled = true; } }