using System; using System.Windows.Input; namespace wpf_generator.ViewModels { public class RelayCommand : ICommand { private readonly Action execute; private readonly Predicate canExecute; public RelayCommand(Action execute) { this.execute = execute; } public RelayCommand(Action execute, Predicate canExecute) : this(execute) { this.canExecute = canExecute; } public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } public void Execute(object parameter) { execute((T)parameter); } public bool CanExecute(object parameter) { return canExecute == null ? true : canExecute((T)parameter); } } }