diff --git a/Toolkit.UI.Avalonia/KeyBindingBehavior.cs b/Toolkit.UI.Avalonia/KeyBindingBehavior.cs deleted file mode 100644 index 20f2117..0000000 --- a/Toolkit.UI.Avalonia/KeyBindingBehavior.cs +++ /dev/null @@ -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, - ICommand -{ - public static readonly StyledProperty KeyBindingProperty = - AvaloniaProperty.Register(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); -} diff --git a/Toolkit.UI.Avalonia/KeyBindingTriggerBehavior.cs b/Toolkit.UI.Avalonia/KeyBindingTriggerBehavior.cs new file mode 100644 index 0000000..68c54c9 --- /dev/null +++ b/Toolkit.UI.Avalonia/KeyBindingTriggerBehavior.cs @@ -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, + ICommand +{ + public static readonly StyledProperty GestureProperty = + AvaloniaProperty.Register(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); +}