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); }