using Avalonia.Controls; using Avalonia.Input; using Avalonia.Threading; using Avalonia.Xaml.Interactivity; namespace Avalonia.Xaml.Interactions.Custom; /// /// Focuses the on event. /// public class FocusOnPointerPressedBehavior : StyledElementBehavior { /// protected override void OnAttachedToVisualTree() { if (AssociatedObject is not null) { AssociatedObject.PointerPressed += PointerPressed; } } /// protected override void OnDetachedFromVisualTree() { if (AssociatedObject is not null) { AssociatedObject.PointerPressed -= PointerPressed; } } private void PointerPressed(object? sender, PointerPressedEventArgs e) { Dispatcher.UIThread.Post(() => AssociatedObject?.Focus()); } }