123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Input;
- namespace OpenSEMI.ClientBase.Command
- {
- public class BaseCommand<T> : ICommand
- {
- #region Fields
- readonly Action<T> _execute = null;
- readonly Predicate<T> _canExecute = null;
- #endregion // Fields
- #region Constructors
- public BaseCommand(Action<T> 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 BaseCommand(Action<T> execute, Predicate<T> canExecute)
- {
- if (execute == null)
- throw new ArgumentNullException("execute");
- _execute = execute;
- _canExecute = canExecute;
- }
- #endregion // Constructors
- #region ICommand Members
- public bool CanExecute(object parameter)
- {
- return _canExecute == null ? true : _canExecute((T)parameter);
- }
- public event EventHandler CanExecuteChanged
- {
- add
- {
- if (_canExecute != null)
- CommandManager.RequerySuggested += value;
- }
- remove
- {
- if (_canExecute != null)
- CommandManager.RequerySuggested -= value;
- }
- }
- public void Execute(object parameter)
- {
- _execute((T)parameter);
- }
- #endregion // ICommand Members
- }
- public class BaseCommand : ICommand
- {
- #region Fields
- readonly Action _execute;
- readonly Func<bool> _canExecute;
- #endregion // Fields
- #region Constructors
- /// <summary>
- /// Creates a new command that can always execute.
- /// </summary>
- /// <param name="execute">The execution logic.</param>
- public BaseCommand(Action 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 BaseCommand(Action execute, Func<bool> canExecute)
- {
- if (execute == null)
- throw new ArgumentNullException("execute");
- _execute = execute;
- _canExecute = canExecute;
- }
- #endregion // Constructors
- #region ICommand Members
- public bool CanExecute(object parameter)
- {
- return _canExecute == null ? true : _canExecute();
- }
- public event EventHandler CanExecuteChanged
- {
- add
- {
- if (_canExecute != null)
- CommandManager.RequerySuggested += value;
- }
- remove
- {
- if (_canExecute != null)
- CommandManager.RequerySuggested -= value;
- }
- }
- public void Execute(object parameter)
- {
- _execute();
- }
- #endregion
- }
- }
|