using System.Windows.Input; namespace WPF_23_MVVMRelayCommand.MVVM; public class RelayCommand : ICommand { private readonly Action _execute; private readonly Func? _canExecute; public RelayCommand(Action execute, Func? canExecute = null) { _execute = execute; _canExecute = canExecute; } public event EventHandler? CanExecuteChanged { add => CommandManager.RequerySuggested += value; remove => CommandManager.RequerySuggested -= value; } public bool CanExecute(object? parameter) { return _canExecute == null || _canExecute(parameter!); } public void Execute(object? parameter) { _execute(parameter!); } }