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