Exemple #1
0
 public void ToDock(bool isActive = true)
 {
     if (!CanDock && isActive)
     {
         _dockControl.SetActive();
         return;
     }
     if (_container != null)
     {
         CanSelect = true;
         Mode      = DockMode.Normal;
         var dockManager = DockManager;
         var group       = _container as LayoutGroup;
         if (group == null || group.AttachObj == null || !group.AttachObj.AttachTo())
         {
             //默认向下停靠
             if (Side == DockSide.None)
             {
                 Side = DockSide.Bottom;
             }
             _container?.Detach(this);
             _container = null;
             _ToRoot(dockManager);
         }
         if (isActive)
         {
             _dockControl.SetActive();
         }
     }
 }
Exemple #2
0
        public void ToFloat(bool isActive = true)
        {
            if (!CanFloat && isActive)
            {
                _dockControl.SetActive();
                return;
            }
            if (_container != null)
            {
                CanSelect = true;
                //注意切换模式
                Mode = DockMode.Float;
                var dockManager = DockManager;
                _container.Detach(this);
                _container = null;
                BaseFloatWindow  wnd;
                BaseGroupControl groupctrl;
                if (!IsDocument)
                {
                    var group = new LayoutGroup(Side, Mode, dockManager);
                    group.Attach(this);
                    groupctrl = new AnchorSideGroupControl(group)
                    {
                        DesiredHeight = DesiredHeight, DesiredWidth = DesiredWidth
                    };
                    wnd = new AnchorGroupWindow(dockManager)
                    {
                        Height = DesiredHeight,
                        Width  = DesiredWidth,
                        Left   = FloatLeft,
                        Top    = FloatTop
                    };
                }
                else
                {
                    var group = new LayoutDocumentGroup(Mode, dockManager);
                    group.Attach(this);
                    groupctrl = new LayoutDocumentGroupControl(group)
                    {
                        DesiredHeight = DesiredHeight, DesiredWidth = DesiredWidth
                    };
                    wnd = new DocumentGroupWindow(dockManager)
                    {
                        Height = DesiredHeight,
                        Width  = DesiredWidth,
                        Left   = FloatLeft,
                        Top    = FloatTop
                    };
                }
                wnd.AttachChild(groupctrl, AttachMode.None, 0);
                wnd.Show();

                if (isActive)
                {
                    _dockControl.SetActive();
                }
            }
        }
Exemple #3
0
 public void Dispose()
 {
     if (_isDisposed)
     {
         return;
     }
     _container?.Detach(this);
     _dockControl = null;
     if (_content is IDockSource)
     {
         (_content as IDockSource).DockControl = null;
     }
     _content    = null;
     _container  = null;
     _isDisposed = true;
 }