private static bool UpdateEffects(object uobject, DragEventArgs e) { IDropTargetAdvisor advisor = GetDropTargetAdvisor(uobject as DependencyObject); if (advisor.IsValidDataObject(e.Data) == false) { return(false); } if ((e.AllowedEffects & DragDropEffects.Move) == 0 && (e.AllowedEffects & DragDropEffects.Copy) == 0) { e.Effects = DragDropEffects.None; return(true); } if ((e.AllowedEffects & DragDropEffects.Move) != 0 && (e.AllowedEffects & DragDropEffects.Copy) != 0) { if ((e.KeyStates & DragDropKeyStates.ControlKey) != 0) { } e.Effects = ((e.KeyStates & DragDropKeyStates.ControlKey) != 0) ? DragDropEffects.Copy : DragDropEffects.Move; } return(true); }
/// <summary> /// Check if drag data is valid and update drag item preview with copy or move effects. /// </summary> /// <param name="sender">Drop area element.</param> /// <param name="e">Contains arguments relevant to all drag-and-drop events.</param> /// <returns>"True", if data is valid and copy or move effects are allowed.</returns> private static bool UpdateEffects(UIElement sender, DragEventArgs e) { if (currentTargetAdvisor.IsValidDataObject(sender, e.Data) == false) { e.Effects = DragDropEffects.None; e.Handled = true; return(false); } if ((e.AllowedEffects & DragDropEffects.Move) == 0 && (e.AllowedEffects & DragDropEffects.Copy) == 0) { e.Effects = DragDropEffects.None; return(false); } if ((e.AllowedEffects & DragDropEffects.Move) != 0 && (e.AllowedEffects & DragDropEffects.Copy) != 0) { // Note: default drag behavior are MOVE and Ctrl+Drag is COPY. // Todo: make it configurable to be able to swap them e.Effects = ((e.KeyStates & DragDropKeyStates.ControlKey) != 0) ? DragDropEffects.Copy : DragDropEffects.Move; } return(true); }
static bool UpdateEffects(object sender, DragEventArgs e) { IDropTargetAdvisor advisor = GetDropTargetAdvisor(sender as FrameworkElement); if (!advisor.IsValidDataObject(e.Data)) { return(false); } // TODO: cope with Link, Scroll if ((e.AllowedEffects & DragDropEffects.Move) == 0 && (e.AllowedEffects & DragDropEffects.Copy) == 0) { e.Effects = DragDropEffects.None; return(false); } if ((e.AllowedEffects & DragDropEffects.Move) != 0) { e.Effects = DragDropEffects.Move; } if ((e.AllowedEffects & DragDropEffects.Copy) != 0) { if ((e.AllowedEffects & DragDropEffects.Move) == 0 || (e.KeyStates & DragDropKeyStates.ControlKey) != 0) { e.Effects = DragDropEffects.Copy; } } return(true); }