diff --git a/src/Avalonia.Controls/Primitives/ScrollBar.cs b/src/Avalonia.Controls/Primitives/ScrollBar.cs index 982c1cdbfc..161c7121c5 100644 --- a/src/Avalonia.Controls/Primitives/ScrollBar.cs +++ b/src/Avalonia.Controls/Primitives/ScrollBar.cs @@ -55,16 +55,6 @@ namespace Avalonia.Controls.Primitives { Thumb.DragDeltaEvent.AddClassHandler((x, e) => x.OnThumbDragDelta(e), RoutingStrategies.Bubble); Thumb.DragCompletedEvent.AddClassHandler((x, e) => x.OnThumbDragComplete(e), RoutingStrategies.Bubble); - - static void AffectsIsVisible(AvaloniaProperty property) - { - property.Changed.AddClassHandler((x, e) => x.CalculateIsVisible()); - } - - AffectsIsVisible(MinimumProperty); - AffectsIsVisible(MaximumProperty); - AffectsIsVisible(ViewportSizeProperty); - AffectsIsVisible(VisibilityProperty); } /// @@ -106,9 +96,9 @@ namespace Avalonia.Controls.Primitives public event EventHandler Scroll; /// - /// Calculates whether the scrollbar should be visible. + /// Calculates and updates whether the scrollbar should be visible. /// - private void CalculateIsVisible() + private void UpdateIsVisible() { var isVisible = Visibility switch { @@ -148,6 +138,16 @@ namespace Avalonia.Controls.Primitives { UpdatePseudoClasses(newValue.GetValueOrDefault()); } + else + { + if (property == MinimumProperty || + property == MaximumProperty || + property == ViewportSizeProperty || + property == VisibilityProperty) + { + UpdateIsVisible(); + } + } } protected override void OnTemplateApplied(TemplateAppliedEventArgs e)