/Foundation/RelayCommand.cs
C# | 58 lines | 46 code | 12 blank | 0 comment | 3 complexity | 87db72326566728241bcd1d510e7aa8c MD5 | raw file
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Input;
- namespace Login.Helpers
- {
- public class RelayCommand : ICommand
- {
- #region Fields
- readonly Action<object> _execute;
- readonly Predicate<object> _canExecute;
- #endregion // Fields
- #region Constructors
- public RelayCommand ( Action<object> execute )
- : this(execute, null)
- {
- }
- 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);
- }
- #endregion // ICommand Members
- }
- }