using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Haftmittel { public class DelegateCommand : System.Windows.Input.ICommand { private readonly Predicate _canExecute; private readonly Action _execute; public DelegateCommand(Action execute) : this(execute, null) { } public DelegateCommand(Action execute, Predicate canExecute) { _execute = execute; _canExecute = canExecute; } public bool CanExecute(object parameter) { if (_canExecute == null) return true; return _canExecute((parameter == null) ? default(T) : (T)Convert.ChangeType(parameter, typeof(T))); } public void Execute(object parameter) { _execute((parameter == null) ? default(T) : (T)Convert.ChangeType(parameter, typeof(T))); } public event EventHandler CanExecuteChanged; public void RaiseCanExecuteChanged() { if (CanExecuteChanged != null) CanExecuteChanged(this, EventArgs.Empty); } } }