private void UnloadViewGroup(ViewGroup viewGroup)
        {
            foreach (View view in viewGroup.Views)
                Remove(view);

            UpdateChannelSize();
        }
        public void Remove(ViewGroup viewGroup)
        {
            if (!ViewGroups.Contains(viewGroup))
                return;

            viewGroup.DockStateChanging -= ViewGroup_DockStateChanging;
            viewGroup.DockStateChanged -= ViewGroup_DockStateChanged;
            viewGroup.ViewDockStateChanging -= ViewGroup_ViewDockStateChanging;
            viewGroup.ViewDockStateChanged -= ViewGroup_ViewDockStateChanged;

            if (viewGroup.DockState == DockState.AutoHide)
                UnloadViewGroup(viewGroup);

            _viewGroups.Remove(viewGroup);
            UpdateChannelSize();
        }
        private void LoadViewGroup(ViewGroup viewGroup)
        {
            foreach (View view in viewGroup.Views)
            {
                if (view.DockState == DockState.AutoHide)
                    Add(view);
            }

            UpdateChannelSize();
        }
        public void Add(ViewGroup viewGroup)
        {
            if (ViewGroups.Contains(viewGroup))
                return;

            _viewGroups.Add(viewGroup);
            viewGroup.DockStateChanging += ViewGroup_DockStateChanging;
            viewGroup.DockStateChanged += ViewGroup_DockStateChanged;
            viewGroup.ViewDockStateChanging += ViewGroup_ViewDockStateChanging;
            viewGroup.ViewDockStateChanged += ViewGroup_ViewDockStateChanged;

            if (viewGroup.DockState == DockState.AutoHide)
                LoadViewGroup(viewGroup);
        }