123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- using System;
- using System.Diagnostics;
- using System.Windows.Input;
- namespace VocabManager.Command
- {
- /// <summary>
- /// A command whose sole purpose is to
- /// relay its functionality to other
- /// objects by invoking delegates. The
- /// default return value for the CanExecute
- /// method is 'true'.
- /// </summary>
- public class RelayCommand : ICommand
- {
- #region Fields
- readonly Action<object> _execute;
- readonly Predicate<object> _canExecute;
- #endregion // Fields
- #region Constructors
- /// <summary>
- /// Creates a new command that can always execute.
- /// </summary>
- /// <param name="execute">The execution logic.</param>
- public RelayCommand(Action<object> execute)
- : this(execute, null)
- {
- }
- /// <summary>
- /// Creates a new command.
- /// </summary>
- /// <param name="execute">The execution logic.</param>
- /// <param name="canExecute">The execution status logic.</param>
- public RelayCommand(Action<object> execute, Predicate<object> canExecute)
- {
- if (execute == null)
- throw new ArgumentNullException("execute");
- _execute = execute;
- _canExecute = canExecute;
- }
- #endregion // Constructors
- #region ICommand Members
- [DebuggerStepThrough]
- public bool CanExecute(object parameter)
- {
- return _canExecute == null ? true : _canExecute(parameter);
- }
- public event EventHandler CanExecuteChanged;
- //{
- // add { CommandManager.RequerySuggested += value; }
- // remove { CommandManager.RequerySuggested -= value; }
- //}
- public void Execute(object parameter)
- {
- _execute(parameter);
- }
- public void RaiseCanExecuteChanged()
- {
- OnCanExecuteChanged(new EventArgs());
- }
- private void OnCanExecuteChanged(EventArgs args)
- {
- if (CanExecuteChanged != null)
- CanExecuteChanged(this,args);
- }
- #endregion // ICommand Members
- }
- }
|