// test only ///////////////// public void Test() { this.MainGrid.Children.Clear(); var tabCtrl = new DockControl.Controls.DockAbleTabControl() { //HorizontalAlignment = HorizontalAlignment.Stretch, //VerticalAlignment = VerticalAlignment.Stretch, }; var dockCtrl = new DockControl.Controls.DockAbleContainerControl(this) { //HorizontalAlignment = HorizontalAlignment.Stretch, //VerticalAlignment = VerticalAlignment.Stretch, //HorizontalContentAlignment = HorizontalAlignment.Stretch, //VerticalContentAlignment = VerticalAlignment.Stretch, //Style = FindResource("ControlStyle_DockContainer") as System.Windows.Style, }; DockManager.Instance.AddDropSurface(dockCtrl); dockCtrl.Content = tabCtrl; this.MainGrid.Children.Add(dockCtrl); for (int i = 0; i < 6; i++) { var tabItem = new DockControl.Controls.DockAbleTabItem() { //HorizontalAlignment = HorizontalAlignment.Stretch, //VerticalAlignment = VerticalAlignment.Stretch, //Style = FindResource("TabItemStyle_DoclAble") as System.Windows.Style, Header = "TabItem " + i }; tabItem.Content = new Grid() { //HorizontalAlignment = HorizontalAlignment.Stretch, //VerticalAlignment = VerticalAlignment.Stretch, Background = new SolidColorBrush(Color.FromArgb(255, (byte)mRand.Next(0, 255), (byte)mRand.Next(0, 255), (byte)mRand.Next(0, 255))) }; tabCtrl.Items.Add(tabItem); } }
public void SetContent(Controls.DockAbleTabItem element) { MainGrid.Children.Clear(); if (element == null) { return; } EditorCommon.Program.RemoveElementFromParent(element); var dockCtrl = new DockControl.Controls.DockAbleContainerControl(this) { //Style = FindResource("ControlStyle_DockContainer") as System.Windows.Style, Group = element.DockGroup, }; // mContainDropSurfaces.Add(dockCtrl); DockManager.Instance.AddDropSurface(dockCtrl); if (element is Controls.DockAbleTabItem) { var tabItem = element as Controls.DockAbleTabItem; tabItem.IsTopLevel = true; var tabCtrl = new DockControl.Controls.DockAbleTabControl(); dockCtrl.Content = tabCtrl; tabCtrl.Items.Add(tabItem); tabCtrl.SelectedIndex = 0; tabCtrl.IsTopLevel = true; MainGrid.Children.Add(dockCtrl); } else { dockCtrl.Content = element; MainGrid.Children.Add(dockCtrl); } }
private void EndDrag(Point point) { switch (mAssistWin.OnDrop(point)) { case Controls.DockAssistWindow.DropType.None: { // 创建新窗口放置对象 var dockWin = new DockAbleWindow(); dockWin.SetContent(mMouseWin.DockElement); dockWin.Left = point.X; dockWin.Top = point.Y; dockWin.Show(); } break; case Controls.DockAssistWindow.DropType.Fill: { if (mAssistWin.HostSurface != null) { mAssistWin.HostSurface.AddChild(mMouseWin.DockElement); } } break; case Controls.DockAssistWindow.DropType.Left: { if (mAssistWin.HostSurface != null && mAssistWin.HostSurface.HostParent != null) { Grid parentGrid = new Grid(); var columnLeft = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }; parentGrid.ColumnDefinitions.Add(columnLeft); var columnMid = new ColumnDefinition() { Width = new GridLength(5, GridUnitType.Pixel) }; parentGrid.ColumnDefinitions.Add(columnMid); var columnRight = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }; parentGrid.ColumnDefinitions.Add(columnRight); var split = new GridSplitter() { Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "GridSplitterStyle_Default")) as Style, ShowsPreview = true, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Cursor = Cursors.SizeWE, }; Grid.SetColumn(split, 1); parentGrid.Children.Add(split); var tabCtrl = mAssistWin.HostSurface.Content as Controls.DockAbleTabControl; if (tabCtrl != null) { mMouseWin.DockElement.IsTopLevel = tabCtrl.IsTopLevel; } EditorCommon.Program.SetElementParent(parentGrid, mAssistWin.HostSurface.HostParent); Grid.SetColumn(parentGrid, Grid.GetColumn(mAssistWin.HostSurface as FrameworkElement)); Grid.SetRow(parentGrid, Grid.GetRow(mAssistWin.HostSurface as FrameworkElement)); EditorCommon.Program.RemoveElementFromParent(mAssistWin.HostSurface as FrameworkElement); parentGrid.Children.Add(mAssistWin.HostSurface as UIElement); Grid.SetColumn(mAssistWin.HostSurface as UIElement, 2); EditorCommon.Program.RemoveElementFromParent(mMouseWin.DockElement); var dockCtrl = new DockControl.Controls.DockAbleContainerControl(mAssistWin.HostSurface.HostWin) { //Style = FindResource("ControlStyle_DockContainer") as System.Windows.Style, Group = mMouseWin.DockElement.DockGroup, }; EditorCommon.Program.SetElementParent(mMouseWin.DockElement, dockCtrl); parentGrid.Children.Add(dockCtrl); Grid.SetColumn(dockCtrl, 0); } } break; case Controls.DockAssistWindow.DropType.Right: { if (mAssistWin.HostSurface != null && mAssistWin.HostSurface.HostParent != null) { Grid parentGrid = new Grid(); var columnLeft = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }; parentGrid.ColumnDefinitions.Add(columnLeft); var columnMid = new ColumnDefinition() { Width = new GridLength(5, GridUnitType.Pixel) }; parentGrid.ColumnDefinitions.Add(columnMid); var columnRight = new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) }; parentGrid.ColumnDefinitions.Add(columnRight); var split = new GridSplitter() { Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "GridSplitterStyle_Default")) as Style, ShowsPreview = true, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Cursor = Cursors.SizeWE }; Grid.SetColumn(split, 1); parentGrid.Children.Add(split); var tabCtrl = mAssistWin.HostSurface.Content as Controls.DockAbleTabControl; if (tabCtrl != null) { mMouseWin.DockElement.IsTopLevel = tabCtrl.IsTopLevel; } EditorCommon.Program.SetElementParent(parentGrid, mAssistWin.HostSurface.HostParent); Grid.SetColumn(parentGrid, Grid.GetColumn(mAssistWin.HostSurface as FrameworkElement)); Grid.SetRow(parentGrid, Grid.GetRow(mAssistWin.HostSurface as FrameworkElement)); EditorCommon.Program.RemoveElementFromParent(mAssistWin.HostSurface as FrameworkElement); parentGrid.Children.Add(mAssistWin.HostSurface as UIElement); Grid.SetColumn(mAssistWin.HostSurface as UIElement, 0); EditorCommon.Program.RemoveElementFromParent(mMouseWin.DockElement); var dockCtrl = new DockControl.Controls.DockAbleContainerControl(mAssistWin.HostSurface.HostWin) { //Style = FindResource("ControlStyle_DockContainer") as System.Windows.Style, Group = mMouseWin.DockElement.DockGroup, }; EditorCommon.Program.SetElementParent(mMouseWin.DockElement, dockCtrl); parentGrid.Children.Add(dockCtrl); Grid.SetColumn(dockCtrl, 2); } } break; case Controls.DockAssistWindow.DropType.Top: { Grid parentGrid = new Grid(); var rowLeft = new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }; parentGrid.RowDefinitions.Add(rowLeft); var rowMid = new RowDefinition() { Height = new GridLength(5, GridUnitType.Pixel) }; parentGrid.RowDefinitions.Add(rowMid); var rowRight = new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }; parentGrid.RowDefinitions.Add(rowRight); var split = new GridSplitter() { Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "GridSplitterStyle_Default")) as Style, ShowsPreview = true, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Cursor = Cursors.SizeNS }; Grid.SetRow(split, 1); parentGrid.Children.Add(split); var tabCtrl = mAssistWin.HostSurface.Content as Controls.DockAbleTabControl; if (tabCtrl != null) { mMouseWin.DockElement.IsTopLevel = tabCtrl.IsTopLevel; } EditorCommon.Program.SetElementParent(parentGrid, mAssistWin.HostSurface.HostParent); Grid.SetColumn(parentGrid, Grid.GetColumn(mAssistWin.HostSurface as FrameworkElement)); Grid.SetRow(parentGrid, Grid.GetRow(mAssistWin.HostSurface as FrameworkElement)); EditorCommon.Program.RemoveElementFromParent(mAssistWin.HostSurface as FrameworkElement); parentGrid.Children.Add(mAssistWin.HostSurface as UIElement); Grid.SetRow(mAssistWin.HostSurface as UIElement, 2); EditorCommon.Program.RemoveElementFromParent(mMouseWin.DockElement); var dockCtrl = new DockControl.Controls.DockAbleContainerControl(mAssistWin.HostSurface.HostWin) { //Style = FindResource("ControlStyle_DockContainer") as System.Windows.Style, Group = mMouseWin.DockElement.DockGroup, }; EditorCommon.Program.SetElementParent(mMouseWin.DockElement, dockCtrl); parentGrid.Children.Add(dockCtrl); Grid.SetRow(dockCtrl, 0); } break; case Controls.DockAssistWindow.DropType.Bottom: { Grid parentGrid = new Grid(); var rowLeft = new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }; parentGrid.RowDefinitions.Add(rowLeft); var rowMid = new RowDefinition() { Height = new GridLength(5, GridUnitType.Pixel) }; parentGrid.RowDefinitions.Add(rowMid); var rowRight = new RowDefinition() { Height = new GridLength(1, GridUnitType.Star) }; parentGrid.RowDefinitions.Add(rowRight); var split = new GridSplitter() { Style = TryFindResource(new ComponentResourceKey(typeof(ResourceLibrary.CustomResources), "GridSplitterStyle_Default")) as Style, ShowsPreview = true, HorizontalAlignment = HorizontalAlignment.Stretch, VerticalAlignment = VerticalAlignment.Stretch, Cursor = Cursors.SizeNS }; Grid.SetRow(split, 1); parentGrid.Children.Add(split); var tabCtrl = mAssistWin.HostSurface.Content as Controls.DockAbleTabControl; if (tabCtrl != null) { mMouseWin.DockElement.IsTopLevel = tabCtrl.IsTopLevel; } EditorCommon.Program.SetElementParent(parentGrid, mAssistWin.HostSurface.HostParent); Grid.SetColumn(parentGrid, Grid.GetColumn(mAssistWin.HostSurface as FrameworkElement)); Grid.SetRow(parentGrid, Grid.GetRow(mAssistWin.HostSurface as FrameworkElement)); EditorCommon.Program.RemoveElementFromParent(mAssistWin.HostSurface as FrameworkElement); parentGrid.Children.Add(mAssistWin.HostSurface as UIElement); Grid.SetRow(mAssistWin.HostSurface as UIElement, 0); EditorCommon.Program.RemoveElementFromParent(mMouseWin.DockElement); var dockCtrl = new DockControl.Controls.DockAbleContainerControl(mAssistWin.HostSurface.HostWin) { //Style = FindResource("ControlStyle_DockContainer") as System.Windows.Style, Group = mMouseWin.DockElement.DockGroup, }; EditorCommon.Program.SetElementParent(mMouseWin.DockElement, dockCtrl); parentGrid.Children.Add(dockCtrl); Grid.SetRow(dockCtrl, 2); } break; } //foreach (var surface in mDropSurfacesWithDragOver) //{ // if (surface != dropedSurface) // surface.OnDragLeave(point); //} //mDropSurfacesWithDragOver.Clear(); mAssistWin.HostSurface = null; mMouseWin.DockElement = null; //this.Hide(); OnLayoutChanged(); }