Example #1
0
        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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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);
        }