diff --git a/src/Avalonia.Controls/Slider.cs b/src/Avalonia.Controls/Slider.cs index b7a571af18..0155ff211a 100644 --- a/src/Avalonia.Controls/Slider.cs +++ b/src/Avalonia.Controls/Slider.cs @@ -44,6 +44,9 @@ namespace Avalonia.Controls Thumb.DragStartedEvent.AddClassHandler((x, e) => x.OnThumbDragStarted(e), RoutingStrategies.Bubble); Thumb.DragDeltaEvent.AddClassHandler((x, e) => x.OnThumbDragDelta(e), RoutingStrategies.Bubble); Thumb.DragCompletedEvent.AddClassHandler((x, e) => x.OnThumbDragCompleted(e), RoutingStrategies.Bubble); + PointerPressedEvent.AddClassHandler((x, e) => x.HandlePointerPressed(e), RoutingStrategies.Tunnel, true); + PointerReleasedEvent.AddClassHandler((x, e) => x.HandlePointerReleased(), RoutingStrategies.Tunnel, true); + PointerCaptureLostEvent.AddClassHandler((x, e) => x.HandlePointerReleased(), RoutingStrategies.Tunnel, true); } /// @@ -207,6 +210,24 @@ namespace Avalonia.Controls return value; } + private void HandlePointerPressed(PointerPressedEventArgs e) + { + if (e.GetCurrentPoint(this).Properties.IsLeftButtonPressed) + { + UpdatePseudoClasses(true); + } + } + + private void HandlePointerReleased() + { + UpdatePseudoClasses(false); + } + + private void UpdatePseudoClasses(bool isPressed) + { + PseudoClasses.Set(":pressed", isPressed); + } + private void UpdatePseudoClasses(Orientation o) { PseudoClasses.Set(":vertical", o == Orientation.Vertical); diff --git a/src/Avalonia.Themes.Fluent/Slider.xaml b/src/Avalonia.Themes.Fluent/Slider.xaml index 1bb76b1606..3db372725a 100644 --- a/src/Avalonia.Themes.Fluent/Slider.xaml +++ b/src/Avalonia.Themes.Fluent/Slider.xaml @@ -1,7 +1,10 @@ - + + + + @@ -31,7 +34,7 @@ - + - - + + + + + + + + + + + + + + + + + + + +