Added KeyBindingTriggerBehavior

This commit is contained in:
TheXamlGuy
2024-04-22 22:49:04 +01:00
parent 7fa80371a4
commit 5ded324d1a
2 changed files with 43 additions and 38 deletions
-38
View File
@@ -1,38 +0,0 @@
using Avalonia;
using Avalonia.Input;
using Avalonia.Xaml.Interactivity;
using System.Windows.Input;
namespace Toolkit.UI.Avalonia;
public class KeyBindingBehavior :
Trigger<InputElement>,
ICommand
{
public static readonly StyledProperty<KeyBinding> KeyBindingProperty =
AvaloniaProperty.Register<KeyBindingBehavior, KeyBinding>(nameof(KeyBinding));
public KeyBinding KeyBinding
{
get => GetValue(KeyBindingProperty);
set => SetValue(KeyBindingProperty, value);
}
public event EventHandler? CanExecuteChanged;
protected override void OnAttached()
{
if (KeyBinding != null)
{
KeyBinding.Command = this;
AssociatedObject?.KeyBindings.Add(KeyBinding);
}
base.OnAttached();
}
public bool CanExecute(object? parameter) => true;
public void Execute(object? parameter) =>
Interaction.ExecuteActions(AssociatedObject, Actions, null);
}
@@ -0,0 +1,43 @@
using Avalonia;
using Avalonia.Input;
using Avalonia.Xaml.Interactivity;
using System.Windows.Input;
namespace Toolkit.UI.Avalonia;
public class KeyBindingTriggerBehavior :
Trigger<InputElement>,
ICommand
{
public static readonly StyledProperty<KeyGesture> GestureProperty =
AvaloniaProperty.Register<KeyBindingTriggerBehavior, KeyGesture>(nameof(Gesture));
public KeyGesture Gesture
{
get => GetValue(GestureProperty);
set => SetValue(GestureProperty, value);
}
public event EventHandler? CanExecuteChanged;
protected override void OnAttached()
{
if (Gesture is not null)
{
KeyBinding keyBinding = new KeyBinding
{
Gesture = Gesture,
Command = this
};
AssociatedObject?.KeyBindings.Add(keyBinding);
}
base.OnAttached();
}
public bool CanExecute(object? parameter) => true;
public void Execute(object? parameter) =>
Interaction.ExecuteActions(AssociatedObject, Actions, null);
}