diff --git a/Changelog.md b/Changelog.md index bfd7dc300..03e90cc43 100644 --- a/Changelog.md +++ b/Changelog.md @@ -40,6 +40,7 @@ - [#369](../../issues/369) - "Restore" button in title bar not displayed correctly when application starts maximized - [#377](../../issues/377) - ToggleButton highlight doesn't match the button size - [#388](../../issues/388) - QuickAccess item not visible when added from backstage + - [#391](../../issues/391) - QAT items not displayed properly if tab is made visible after initialization - ### Enhancements - [#250](../../issues/250) - Enable change/hide of window title foreground diff --git a/Fluent.Ribbon/Controls/RibbonContextualTabGroup.cs b/Fluent.Ribbon/Controls/RibbonContextualTabGroup.cs index beeec6b88..af0eef6df 100644 --- a/Fluent.Ribbon/Controls/RibbonContextualTabGroup.cs +++ b/Fluent.Ribbon/Controls/RibbonContextualTabGroup.cs @@ -83,13 +83,20 @@ public Visibility InnerVisibility } private static readonly DependencyPropertyKey InnerVisibilityPropertyKey = - DependencyProperty.RegisterReadOnly(nameof(InnerVisibility), typeof(Visibility), typeof(RibbonContextualTabGroup), new PropertyMetadata(VisibilityBoxes.Visible)); + DependencyProperty.RegisterReadOnly(nameof(InnerVisibility), typeof(Visibility), typeof(RibbonContextualTabGroup), new PropertyMetadata(VisibilityBoxes.Visible, OnInnerVisibilityChanged)); /// /// Using a DependencyProperty as the backing store for InnerVisibility. This enables animation, styling, binding, etc... /// public static readonly DependencyProperty InnerVisibilityProperty = InnerVisibilityPropertyKey.DependencyProperty; + private static void OnInnerVisibilityChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var group = (RibbonContextualTabGroup)d; + + ForceRedraw(@group); + } + /// /// Gets the first visible TabItem in this group /// @@ -142,9 +149,7 @@ private static void OnVisibilityChanged(DependencyObject d, DependencyPropertyCh group.UpdateInnerVisiblityAndGroupBorders(); - var titleBar = group.Parent as RibbonTitleBar; - - titleBar?.InvalidateMeasure(); + ForceRedraw(group); } /// @@ -330,12 +335,25 @@ protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) /// private void UpdateInnerVisibility() { - this.InnerVisibility = this.Visibility == Visibility.Visible && this.Items.Any(item => item.Visibility == Visibility.Visible) ? Visibility.Visible : Visibility.Collapsed; + this.InnerVisibility = this.Visibility == Visibility.Visible && this.Items.Any(item => item.Visibility == Visibility.Visible) + ? Visibility.Visible + : Visibility.Collapsed; } private void OnParentWindowStateChanged(object sender, EventArgs e) { this.IsWindowMaximized = this.parentWidow.WindowState == WindowState.Maximized; } + + private static void ForceRedraw(RibbonContextualTabGroup @group) + { + @group.InvalidateMeasure(); + @group.UpdateLayout(); + + var titleBar = @group.Parent as RibbonTitleBar; + + titleBar?.InvalidateMeasure(); + titleBar?.UpdateLayout(); + } } } \ No newline at end of file