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;
switch (dockStyle)
{
case DockStyle.Left:
paneFrom.DockTo(container, pane, DockAlignment.Left, 0.5);
break;
case DockStyle.Right:
paneFrom.DockTo(container, pane, DockAlignment.Right, 0.5);
break;
case DockStyle.Top:
paneFrom.DockTo(container, pane, DockAlignment.Top, 0.5);
break;
case DockStyle.Bottom:
paneFrom.DockTo(container, pane, DockAlignment.Bottom, 0.5);
break;
}
paneFrom.DockState = pane.DockState;
}
}