public void DockTo(DockPane pane, DockStyle dockStyle, int contentIndex) { if (dockStyle == DockStyle.Fill) { bool samePane = (Pane == pane); if (!samePane) { Pane = pane; } if (contentIndex == -1 || !samePane) { pane.SetContentIndex(Content, contentIndex); } else { DockContentCollection contents = pane.Contents; int oldIndex = contents.IndexOf(Content); int newIndex = contentIndex; if (oldIndex < newIndex) { newIndex += 1; if (newIndex > contents.Count - 1) { newIndex = -1; } } pane.SetContentIndex(Content, newIndex); } } else { DockPane paneFrom = DockPanel.DockPaneFactory.CreateDockPane(Content, pane.DockState, true); INestedPanesContainer container = pane.NestedPanesContainer; if (dockStyle == DockStyle.Left) { paneFrom.DockTo(container, pane, DockAlignment.Left, 0.5); } else if (dockStyle == DockStyle.Right) { paneFrom.DockTo(container, pane, DockAlignment.Right, 0.5); } else if (dockStyle == DockStyle.Top) { paneFrom.DockTo(container, pane, DockAlignment.Top, 0.5); } else if (dockStyle == DockStyle.Bottom) { paneFrom.DockTo(container, pane, DockAlignment.Bottom, 0.5); } paneFrom.DockState = pane.DockState; } }