diff --git a/src/Avalonia.Controls/Button.cs b/src/Avalonia.Controls/Button.cs index 78bbd836be..dee8969a17 100644 --- a/src/Avalonia.Controls/Button.cs +++ b/src/Avalonia.Controls/Button.cs @@ -68,6 +68,9 @@ namespace Avalonia.Controls public static readonly RoutedEvent ClickEvent = RoutedEvent.Register("Click", RoutingStrategies.Bubble); + public static readonly AvaloniaProperty IsPressedProperty = + AvaloniaProperty.RegisterDirect(nameof(IsPressed), b => b.IsPressed); + /// /// Initializes static members of the class. /// @@ -134,6 +137,12 @@ namespace Avalonia.Controls set { SetValue(IsDefaultProperty, value); } } + public bool IsPressed + { + get { return GetValue(IsPressedProperty); } + private set { SetValue(IsPressedProperty, value); } + } + /// protected override void OnAttachedToVisualTree(VisualTreeAttachmentEventArgs e) { @@ -164,7 +173,7 @@ namespace Avalonia.Controls { RaiseClickEvent(); } - + IsPressed = true; e.Handled = true; } @@ -180,7 +189,7 @@ namespace Avalonia.Controls { RaiseClickEvent(); } - + IsPressed = false; e.Handled = true; } } @@ -223,6 +232,7 @@ namespace Avalonia.Controls { PseudoClasses.Add(":pressed"); e.Device.Capture(this); + IsPressed = true; e.Handled = true; if (ClickMode == ClickMode.Press) @@ -241,6 +251,7 @@ namespace Avalonia.Controls { e.Device.Capture(null); PseudoClasses.Remove(":pressed"); + IsPressed = false; e.Handled = true; if (ClickMode == ClickMode.Release && new Rect(Bounds.Size).Contains(e.GetPosition(this)))