internal AnchorablePaneControlOverlayArea( IOverlayWindow overlayWindow, LayoutAnchorablePaneControl anchorablePaneControl) : base(overlayWindow) { _anchorablePaneControl = anchorablePaneControl; SetScreenDetectionArea(new Rect( _anchorablePaneControl.PointToScreenDPI(new Point()), _anchorablePaneControl.TransformActualSizeToAncestor())); }
internal UIElement CreateUIElementForModel(ILayoutElement model) { if (model is LayoutPanel) return new LayoutPanelControl(model as LayoutPanel); if (model is LayoutAnchorablePaneGroup) return new LayoutAnchorablePaneGroupControl(model as LayoutAnchorablePaneGroup); if (model is LayoutDocumentPaneGroup) return new LayoutDocumentPaneGroupControl(model as LayoutDocumentPaneGroup); if (model is LayoutAnchorSide) { var templateModelView = new LayoutAnchorSideControl(model as LayoutAnchorSide); templateModelView.SetBinding(TemplateProperty, new Binding("AnchorSideTemplate") {Source = this}); return templateModelView; } if (model is LayoutAnchorGroup) { var templateModelView = new LayoutAnchorGroupControl(model as LayoutAnchorGroup); templateModelView.SetBinding(TemplateProperty, new Binding("AnchorGroupTemplate") {Source = this}); return templateModelView; } if (model is LayoutDocumentPane) { var templateModelView = new LayoutDocumentPaneControl(model as LayoutDocumentPane); templateModelView.SetBinding(StyleProperty, new Binding("DocumentPaneControlStyle") {Source = this}); return templateModelView; } if (model is LayoutAnchorablePane) { var templateModelView = new LayoutAnchorablePaneControl(model as LayoutAnchorablePane); templateModelView.SetBinding(StyleProperty, new Binding("AnchorablePaneControlStyle") {Source = this}); return templateModelView; } if (model is LayoutAnchorableFloatingWindow) { if (DesignerProperties.GetIsInDesignMode(this)) return null; var modelFW = model as LayoutAnchorableFloatingWindow; var newFW = new LayoutAnchorableFloatingWindowControl(modelFW); newFW.SetParentToMainWindowOf(this); var paneForExtensions = modelFW.RootPanel.Children.OfType<LayoutAnchorablePane>().FirstOrDefault(); if (paneForExtensions != null) { //ensure that floating window position is inside current (or nearest) monitor paneForExtensions.KeepInsideNearestMonitor(); newFW.Left = paneForExtensions.FloatingLeft; newFW.Top = paneForExtensions.FloatingTop; newFW.Width = paneForExtensions.FloatingWidth; newFW.Height = paneForExtensions.FloatingHeight; } newFW.ShowInTaskbar = false; newFW.Show(); // Do not set the WindowState before showing or it will be lost if (paneForExtensions != null && paneForExtensions.IsMaximized) { newFW.WindowState = WindowState.Maximized; } return newFW; } if (model is LayoutDocumentFloatingWindow) { if (DesignerProperties.GetIsInDesignMode(this)) return null; var modelFW = model as LayoutDocumentFloatingWindow; var newFW = new LayoutDocumentFloatingWindowControl(modelFW); newFW.SetParentToMainWindowOf(this); var paneForExtensions = modelFW.RootDocument; if (paneForExtensions != null) { //ensure that floating window position is inside current (or nearest) monitor paneForExtensions.KeepInsideNearestMonitor(); newFW.Left = paneForExtensions.FloatingLeft; newFW.Top = paneForExtensions.FloatingTop; newFW.Width = paneForExtensions.FloatingWidth; newFW.Height = paneForExtensions.FloatingHeight; } newFW.ShowInTaskbar = false; newFW.Show(); // Do not set the WindowState before showing or it will be lost if (paneForExtensions != null && paneForExtensions.IsMaximized) { newFW.WindowState = WindowState.Maximized; } return newFW; } if (model is LayoutDocument) { var templateModelView = new LayoutDocumentControl {Model = model as LayoutDocument}; return templateModelView; } return null; }