using System.Windows.Input; namespace Zcbot.WindowsNode; internal sealed class RelayCommand(Action execute, Func? canExecute = null) : ICommand { public event EventHandler? CanExecuteChanged; public bool CanExecute(object? parameter) => canExecute?.Invoke() ?? true; public void Execute(object? parameter) => execute(); internal void RaiseCanExecuteChanged() => CanExecuteChanged?.Invoke(this, EventArgs.Empty); }