示例#1
0
        // 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);
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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();
        }