根据以前的实践,这个功能已完成(标题), 点这里,但在复杂情况下上面的做法就会出现不稳定,比如说点击以后完成联动的操作
下面是自己在调试程序的时候摸索出来的方法,控件的官方资料少的可怜,无奈!!!
下文的对象sandDockManager就是SandDockManager控件的对象
//得到上下左右四个方向的Pad容器
var rightContainer = sandDockManager.FindDockContainer(TD.SandDock.ContainerDockLocation.Right);
var leftContainer = sandDockManager.FindDockContainer(TD.SandDock.ContainerDockLocation.Left);
var topConttainer = sandDockManager.FindDockContainer(TD.SandDock.ContainerDockLocation.Top);
var bottomConttainer = sandDockManager.FindDockContainer(TD.SandDock.ContainerDockLocation.Bottom);
MergeDockControls(rightContainer, window);
MergeDockControls(leftContainer, window);
MergeDockControls(topConttainer, window);
MergeDockControls(bottomConttainer, window);
private static void MergeDockControls(DockContainer container, DockableWindow window)
{
if (container != null && container.LayoutSystem.LayoutSystems.Count > 1)
{
var dockControlList = new List<DockControl>();
foreach (LayoutSystemBase layoutSystem in container.LayoutSystem.LayoutSystems)
{
var controlLayoutSystem = (ControlLayoutSystem) layoutSystem;
var controls = controlLayoutSystem.Controls;
foreach (DockControl dockControl in controls)
{
if (!dockControlList.Contains(dockControl))
dockControlList.Add(dockControl);
}
}
foreach (DockControl dockControl in dockControlList)
{
var controlLayoutSystem = (ControlLayoutSystem) container.LayoutSystem.LayoutSystems[0];
if (!controlLayoutSystem.Controls.Contains(dockControl))
controlLayoutSystem.Controls.Add(dockControl);
}
for (int i = 0; i < container.LayoutSystem.LayoutSystems.Count; i++)
{
LayoutSystemBase layoutSystem = container.LayoutSystem.LayoutSystems[i];
int index = container.LayoutSystem.LayoutSystems.IndexOf(layoutSystem);
if (index > 0)
{
container.LayoutSystem.LayoutSystems.Remove(layoutSystem);
}
}
((ControlLayoutSystem) container.LayoutSystem.LayoutSystems[0]).SelectedControl = window;
}
}