From 0eb7b2d25e458b2df2172b43fe3102119e03993a Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Mon, 9 Sep 2019 18:01:43 +0200 Subject: [PATCH] Enable adding event handlers to Gestures events. Added the `Add*Handler` and `Remove*Handler` events required by XAML in order to use attached event syntax. Added unit test to ensure this works. --- src/Avalonia.Input/Gestures.cs | 30 ++++++++++++ .../Xaml/EventTests.cs | 46 +++++++++++-------- 2 files changed, 58 insertions(+), 18 deletions(-) diff --git a/src/Avalonia.Input/Gestures.cs b/src/Avalonia.Input/Gestures.cs index ea4892ebfc..6b06151773 100644 --- a/src/Avalonia.Input/Gestures.cs +++ b/src/Avalonia.Input/Gestures.cs @@ -39,6 +39,36 @@ namespace Avalonia.Input InputElement.PointerReleasedEvent.RouteFinished.Subscribe(PointerReleased); } + public static void AddTappedHandler(IInteractive element, EventHandler handler) + { + element.AddHandler(TappedEvent, handler); + } + + public static void AddDoubleTappedHandler(IInteractive element, EventHandler handler) + { + element.AddHandler(DoubleTappedEvent, handler); + } + + public static void AddRightTappedHandler(IInteractive element, EventHandler handler) + { + element.AddHandler(RightTappedEvent, handler); + } + + public static void RemoveTappedHandler(IInteractive element, EventHandler handler) + { + element.RemoveHandler(TappedEvent, handler); + } + + public static void RemoveDoubleTappedHandler(IInteractive element, EventHandler handler) + { + element.RemoveHandler(DoubleTappedEvent, handler); + } + + public static void RemoveRightTappedHandler(IInteractive element, EventHandler handler) + { + element.RemoveHandler(RightTappedEvent, handler); + } + private static void PointerPressed(RoutedEventArgs ev) { if (ev.Route == RoutingStrategies.Bubble) diff --git a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/EventTests.cs b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/EventTests.cs index dcb6533b5e..bde4e34643 100644 --- a/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/EventTests.cs +++ b/tests/Avalonia.Markup.Xaml.UnitTests/Xaml/EventTests.cs @@ -1,7 +1,6 @@ // Copyright (c) The Avalonia Project. All rights reserved. // Licensed under the MIT license. See licence.md file in the project root for full license information. -using System; using Avalonia.Controls; using Avalonia.Input; using Avalonia.Interactivity; @@ -12,45 +11,56 @@ namespace Avalonia.Markup.Xaml.UnitTests.Xaml public class EventTests : XamlTestBase { [Fact] - public void Event_Is_Attached() + public void Event_Is_Assigned() { var xaml = @"