public IDockDocument ShowDocument(string name, CreateDockDocumentDelegate createDockCallback) { IDockDocument doc = null; var avalonDoc = FindAvalonDocument(name); if (avalonDoc == null) { if (String.CompareOrdinal(name, "startPage") != 0 && StartPageDockDocument.GlobalAutoClose) { StartPageDockDocument.GlobalAutoClose = false; CloseDocument("startPage"); } avalonDoc = new DocumentContent() { Name = name }; doc = createDockCallback(avalonDoc, name); BindingExtensions.CreateBinding(doc, "DocumentTitle", avalonDoc, DocumentContent.TitleProperty, BindingMode.OneWay); avalonDoc.Content = doc; avalonDoc.Closing += AvalonDoc_Closing; avalonDoc.Closed += AvalonDoc_Closed; } avalonDoc.Show(dockingManager, false); Dispatcher.BeginInvoke(new NoArgsDelegate(() => { avalonDoc.Manager.ActiveDocument = avalonDoc; }), null); return(doc); }
public IDockPane ShowPane(string name, CreateDockPaneDelegate createDockPane) { IDockPane pane = null; var avalonPane = FindAvalonPane(name); if (avalonPane == null) { avalonPane = new DockableContent() { Name = name }; pane = createDockPane(avalonPane, name); BindingExtensions.CreateBinding(pane, "PaneTitle", avalonPane, DockableContent.TitleProperty, BindingMode.OneWay); avalonPane.Content = pane; avalonPane.Closing += AvalonPane_Closing; avalonPane.Closed += AvalonPane_Closed; AnchorStyle anchor = AnchorStyle.None; switch (pane.DefaultPaneLocation) { case PaneLocation.Left: anchor = AnchorStyle.Left; break; case PaneLocation.Right: anchor = AnchorStyle.Right; break; case PaneLocation.Top: anchor = AnchorStyle.Top; break; case PaneLocation.Bottom: anchor = AnchorStyle.Bottom; break; } avalonPane.HideOnClose = pane.HidePaneOnClose; avalonPane.Show(dockingManager, anchor); } else { avalonPane.Show(); } Dispatcher.BeginInvoke(new NoArgsDelegate(() => { avalonPane.Manager.ActiveDocument = avalonPane; }), null); return(pane); }