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(); } } }
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(); } } }
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; }