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());
}
}