diff --git a/source/Components/AvalonDock/Controls/LayoutGridControl.cs b/source/Components/AvalonDock/Controls/LayoutGridControl.cs index 9a7afdb3..4193e6e6 100644 --- a/source/Components/AvalonDock/Controls/LayoutGridControl.cs +++ b/source/Components/AvalonDock/Controls/LayoutGridControl.cs @@ -93,12 +93,21 @@ protected override void OnInitialized(EventArgs e) #region Internal Methods + /// + /// Method is invoked to invoke custom code when all children are updated + /// towards the size they can occupy in the available space of the Grid control. + /// protected void FixChildrenDockLengths() { using (_fixingChildrenDockLengths.Enter()) OnFixChildrenDockLengths(); } + /// + /// This method provides an opportunity for deriving classes to invoke custom when + /// all children of this Grid are update towards the size + /// they can occupy in the available space of the Grid control. + /// protected abstract void OnFixChildrenDockLengths(); #endregion @@ -130,6 +139,11 @@ private void OnUnloaded(object sender, RoutedEventArgs e) Unloaded -= OnUnloaded; } + /// + /// Is invoked to update all children towards the size they can occupy in the available space + /// of the Grid control. This includes detaching/attaching all relevant event handlers and + /// property bindings. + /// private void UpdateChildren() { var alreadyContainedChildren = Children.OfType().ToArray(); @@ -189,6 +203,10 @@ private void OnChildModelPropertyChanged(object sender, System.ComponentModel.Pr UpdateRowColDefinitions(); } + /// + /// Is invoked to update column and row definitions towards the available size + /// when processing resize events or application start-up. + /// private void UpdateRowColDefinitions() { var root = _model.Root; diff --git a/source/Components/AvalonDock/Layout/LayoutAnchorable.cs b/source/Components/AvalonDock/Layout/LayoutAnchorable.cs index 3aabc49e..23306af8 100644 --- a/source/Components/AvalonDock/Layout/LayoutAnchorable.cs +++ b/source/Components/AvalonDock/Layout/LayoutAnchorable.cs @@ -540,7 +540,11 @@ internal void CloseAnchorable() { if (!TestCanClose()) return; if (IsAutoHidden) ToggleAutoHide(); + + RaisePropertyChanging(nameof(IsVisible)); CloseInternal(); + IsVisible = false; + RaisePropertyChanged(nameof(IsVisible)); } internal void SetCanCloseInternal(bool canClose)