using System.Reactive.Disposables;
using Avalonia.Input;
using Avalonia.Interactivity;
namespace Avalonia.Xaml.Interactions.Custom;
///
///
///
public class ExecuteCommandOnRightTappedBehavior : ExecuteCommandRoutedEventBehaviorBase
{
///
///
///
///
protected override void OnAttachedToVisualTree(CompositeDisposable disposable)
{
var control = SourceControl ?? AssociatedObject;
var dispose = control?
.AddDisposableHandler(
Gestures.RightTappedEvent,
OnRightTapped,
EventRoutingStrategy);
if (dispose is not null)
{
disposable.Add(dispose);
}
}
private void OnRightTapped(object? sender, RoutedEventArgs e)
{
if (e.Handled)
{
return;
}
if (ExecuteCommand())
{
e.Handled = MarkAsHandled;
}
}
}