根据以前的实践,这个功能已完成(标题), 点这里,但在复杂情况下上面的做法就会出现不稳定,比如说点击以后完成联动的操作
下面是自己在调试程序的时候摸索出来的方法,控件的官方资料少的可怜,无奈!!!
下文的对象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; } }