Ejemplo n.º 1
0
        private static void TargetChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            DependencyObject Element       = sender as DependencyObject;
            IDragDropTarget  NewTarget     = e.NewValue as IDragDropTarget;
            IDragDropTarget  CurrentTarget = e.OldValue as IDragDropTarget;

            if (Element is UIElement || Element is ContentElement)
            {
                if (CurrentTarget != null)
                {
                    DragDropTargetAdapter Adapter;
                    DragDrop.dragDropTargets.TryGetValue(Element, out Adapter).DbC_Assure(isSuccess => isSuccess);
                    DragDrop.dragDropTargets.Remove(Element);
                    Adapter?.Dispose();
                }

                if (NewTarget != null)
                {
                    DragDropTargetAdapter Adapter = DragDropTargetAdapter.Create(NewTarget, Element, true);
                    DragDrop.dragDropTargets.Add(Element, Adapter);
                }
            }
            else
            {
                throw new InvalidOperationException("Drag and Drop target can only be registered on UIElements and ContentElements");
            }
        }
Ejemplo n.º 2
0
        /*
         *  private CustomPopupPlacement[] HandlePopupPlacement(Size popupsize, Size targetsize, Point offset)
         *  {
         *      Point Position = this.dragLocation;
         *      Position.Offset(offset.X, offset.Y);
         *      return new[] { new CustomPopupPlacement(Position, PopupPrimaryAxis.None), };
         *  }*/

        private void DragEnter(object sender, DragEventArgs e)
        {
            DragDropEffects Effect = this.GetDropEffect(e.AllowedEffects, e.KeyStates, e.Data);

            this.HandleDragStart(DragDropTargetAdapter.ToDropEffect(Effect));
            this.HandleDragUpdate(DragDropTargetAdapter.ToDropEffect(Effect), new DragPosition(e));

            e.Effects = Effect;
            e.Handled = true;
        }
Ejemplo n.º 3
0
        private void Drop(object sender, DragEventArgs e)
        {
            e.Effects = this.GetDropEffect(e.AllowedEffects, e.KeyStates, e.Data);

            DragDropEffects DropEffects = this.GetDropEffect(e.Effects, e.KeyStates, e.Data);

            this.targetHandler.DoDrop(e.Data, DragDropTargetAdapter.ToDropEffect(DropEffects), this.dragTargetHandler.GetAdditionalDropInfo(new DragPosition(e)));

            e.Handled = true;

            this.HandleDragEnd();
        }
Ejemplo n.º 4
0
        private void DragOver(object sender, DragEventArgs e)
        {
            DragDropEffects Effect = this.GetDropEffect(e.AllowedEffects, e.KeyStates, e.Data);

            e.Effects = Effect;
            e.Handled = true;

            this.HandleDragUpdate(DragDropTargetAdapter.ToDropEffect(Effect), new DragPosition(e));


            /*Window Window = Window.GetWindow(this.target);
             * this.dragLocation = Window.PointToScreen(e.GetPosition(Window));
             *  this.popup.PrivateMembers().Call("Reposition");*/
        }