public class DelegateCommand : ICommand { Func<object, bool> canExecute; Action<object> executeAction; bool canExecuteCache; #region 构造函数 public DelegateCommand() : this(null, null) { } public DelegateCommand(Action<object> executeAction, Func<object, bool> canExecute) { this.executeAction = executeAction; this.canExecute = canExecute; } #endregion #region get-set public Func<object, bool> CanExecuteEx { get { return canExecute; } set { canExecute = value; } } public Action<object> ExecuteActionEx { get { return executeAction; } set { executeAction = value; } } #endregion #region ICommand Members public bool CanExecute(object parameter) { if (canExecute == null) return true; bool temp = canExecute(parameter); if (canExecuteCache != temp) { canExecuteCache = temp; } return canExecuteCache; } //public event EventHandler CanExecuteChanged; public void Execute(object parameter) { if (executeAction == null) return; executeAction(parameter); } public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } } #endregion }
时间: 2024-11-05 13:23:09