void IDropableObject.AcceptDrag(IDragableObject dragObject, Point position)
 {
     if (DragAccept != null)
     {
         DragAccept(dragObject, position);
     }
 }
        public void AcceptDrag(IDragableObject dragObject, Point position)
        {
            DragObject obj = dragObject as DragObject;

            if (obj == null)
            {
                return;
            }

            AgDataGridRow targetRow = GetRowAtPos(position);

            if (targetRow == null)
            {
                return;
            }

            CorrectRowsOrder();

            int targetSortOrder        = ((DataItem)targetRow.DataContext).SortOrder;
            int targetRowVisibleIndex  = dataGrid.GetRowVisibleIndex(targetRow.Handle);
            int draggedRowVisibleIndex = dataGrid.GetRowVisibleIndex(obj.Row.Handle);

            ((DataItem)obj.DataRow).SortOrder = targetSortOrder;

            //change rows order
            ChangeRowsOrder(targetRowVisibleIndex, draggedRowVisibleIndex);

            //resort grid data
            ResortGridData();
        }
 bool IDropableObject.CanAccept(IDragableObject dragObject, Point position)
 {
     if (CanDragAccept != null)
     {
         return(CanDragAccept(dragObject, position));
     }
     return(false);
 }
예제 #4
0
        void IDropableObject.AcceptDrag(IDragableObject dragObject, Point position)
        {
            DragObject obj = dragObject as DragObject;

            if (obj == null)
            {
                return;
            }

            //
            // Recycle
            //
            if (this.leftGrid == obj.Source || this.rightGrid == obj.Source)
            {
                Point localPt = DropController.TransformSurface(position, this.recycler, this.DragSurface);
                if (DropController.IsIn(this.recycler, localPt))
                {
                    IList <DataItem> items = obj.Source.DataSource as IList <DataItem>;
                    items.Remove(obj.DataRow as DataItem);
                    obj.Source.Refresh();
                    return;
                }
            }

            IList <DataItem> sourceItems = null;
            IList <DataItem> destItems   = null;

            //
            // Right to Left
            //
            if (obj.Source == this.rightGrid)
            {
                sourceItems = this.rightGrid.DataSource as IList <DataItem>;
                destItems   = this.leftGrid.DataSource as IList <DataItem>;
            }

            //
            // Left to Right
            //
            else if (obj.Source == this.leftGrid)
            {
                sourceItems = this.leftGrid.DataSource as IList <DataItem>;
                destItems   = this.rightGrid.DataSource as IList <DataItem>;
            }

            DataItem dataItem = obj.DataRow as DataItem;

            if (sourceItems != null && destItems != null && dataItem != null && sourceItems.Contains(dataItem) && !destItems.Contains(dataItem))
            {
                sourceItems.Remove(dataItem);
                destItems.Add(dataItem);

                this.leftGrid.Refresh();
                this.rightGrid.Refresh();
            }
        }
        public bool CanAccept(IDragableObject dragObject, Point position)
        {
            DragObject obj = dragObject as DragObject;

            if (this.dataGrid == obj.Source)
            {
                Point localPt = DropController.TransformSurface(position, this.dataGrid, this.DragSurface);
                if (DropController.IsIn(this.dataGrid, localPt))
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #6
0
        bool IDropableObject.CanAccept(IDragableObject dragObject, Point position)
        {
            DragObject obj = dragObject as DragObject;

            if (obj == null)
            {
                return(false);
            }

            //
            // Recycle
            //
            if (this.leftGrid == obj.Source || this.rightGrid == obj.Source)
            {
                Point localPt = DropController.TransformSurface(position, this.recycler, this.DragSurface);
                if (DropController.IsIn(this.recycler, localPt))
                {
                    return(true);
                }
            }

            //
            // Left to Right
            //
            if (this.leftGrid == obj.Source)
            {
                Point localPt = DropController.TransformSurface(position, this.rightGrid, this.DragSurface);
                if (DropController.IsIn(this.rightGrid, localPt))
                {
                    return(true);
                }
            }

            //
            // Right to Left
            //
            else if (this.rightGrid == obj.Source)
            {
                Point localPt = DropController.TransformSurface(position, this.leftGrid, this.DragSurface);
                if (DropController.IsIn(this.leftGrid, localPt))
                {
                    return(true);
                }
            }

            return(false);
        }
 public DragControllerEx(FrameworkElement dropContainer, IDragableObject dragableObject, Canvas surfaceCanvas, Point startPt, Point margin)
     : base(dragableObject, surfaceCanvas, startPt, margin)
 {
     this._dropContainer = dropContainer;
 }