Пример #1
0
        public override Geometry GetPreviewPath(OverlayWindow overlayWindow, LayoutFloatingWindow floatingWindowModel)
        {
            LayoutDocumentPaneGroup layoutDocumentPaneGroup;
            LayoutPanel             layoutPanel;
            ILayoutDocumentPane     model   = this._targetPane.Model as ILayoutDocumentPane;
            DockingManager          manager = model.Root.Manager;

            if (!this.FindParentLayoutDocumentPane(model, out layoutDocumentPaneGroup, out layoutPanel))
            {
                return(null);
            }
            Rect screenArea = (manager.FindLogicalChildren <FrameworkElement>().OfType <ILayoutControl>().First <ILayoutControl>((ILayoutControl d) => {
                if (layoutDocumentPaneGroup == null)
                {
                    return(d.Model == layoutPanel);
                }
                return(d.Model == layoutDocumentPaneGroup);
            }) as FrameworkElement).GetScreenArea();

            switch (base.Type)
            {
            case DropTargetType.DocumentPaneDockAsAnchorableLeft:
            {
                screenArea.Offset(-overlayWindow.Left, -overlayWindow.Top);
                screenArea.Width = screenArea.Width / 3;
                return(new RectangleGeometry(screenArea));
            }

            case DropTargetType.DocumentPaneDockAsAnchorableTop:
            {
                screenArea.Offset(-overlayWindow.Left, -overlayWindow.Top);
                screenArea.Height = screenArea.Height / 3;
                return(new RectangleGeometry(screenArea));
            }

            case DropTargetType.DocumentPaneDockAsAnchorableRight:
            {
                screenArea.Offset(-overlayWindow.Left, -overlayWindow.Top);
                screenArea.Offset(screenArea.Width - screenArea.Width / 3, 0);
                screenArea.Width = screenArea.Width / 3;
                return(new RectangleGeometry(screenArea));
            }

            case DropTargetType.DocumentPaneDockAsAnchorableBottom:
            {
                screenArea.Offset(-overlayWindow.Left, -overlayWindow.Top);
                screenArea.Offset(0, screenArea.Height - screenArea.Height / 3);
                screenArea.Height = screenArea.Height / 3;
                return(new RectangleGeometry(screenArea));
            }
            }
            return(null);
        }