public override bool CanDrop(Point point, ILayoutElement element)
        {
            DockLayoutElementDragInfo dockLayoutElementDragInfo = new DockLayoutElementDragInfo(this.View, point, element);
            BaseLayoutItem            draggedItem = dockLayoutElementDragInfo.Item;
            BaseLayoutItem            target      = dockLayoutElementDragInfo.Target;

            if (!DragHelper.IsItemInGroup(draggedItem) && !DragHelper.IsTargetInGroup(target))
            {
                return(base.CanDrop(point, element));
            }
            bool result = DragHelper.AllowMoving(draggedItem, target);

            return(result);
        }
        public override bool CanDrop(Point point, ILayoutElement element)
        {
            DockLayoutElementDragInfo dockLayoutElementDragInfo = new DockLayoutElementDragInfo(base.View, point, element);
            var draggedItem = dockLayoutElementDragInfo.Item;
            var target      = dockLayoutElementDragInfo.Target;

            if ((dockLayoutElementDragInfo.DropTarget is HiddenItemElement || dockLayoutElementDragInfo.DropTarget is HiddenItemsListElement) && dockLayoutElementDragInfo.Item.AllowHide)
            {
                LayoutItemType itemType = dockLayoutElementDragInfo.Item.ItemType;
                return(LayoutItemsHelper.IsLayoutItem(dockLayoutElementDragInfo.Item) || itemType == LayoutItemType.Group);
            }
            if (!DragHelper.IsItemInGroup(draggedItem) && !DragHelper.IsTargetInGroup(target))
            {
                return(base.CanDrop(point, element));
            }
            return(DragHelper.AllowMoving(draggedItem, target));
        }