| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 | using System;using System.Windows.Input;namespace OpenSEMI.ClientBase.Command{	public class BaseCommand<T> : ICommand	{		private readonly Action<T> _execute = null;		private readonly Predicate<T> _canExecute = null;		public event EventHandler CanExecuteChanged		{			add			{				if (_canExecute != null)				{					CommandManager.RequerySuggested += value;				}			}			remove			{				if (_canExecute != null)				{					CommandManager.RequerySuggested -= value;				}			}		}		public BaseCommand(Action<T> execute)			: this(execute, (Predicate<T>)null)		{		}		public BaseCommand(Action<T> execute, Predicate<T> canExecute)		{			if (execute == null)			{				throw new ArgumentNullException("execute");			}			_execute = execute;			_canExecute = canExecute;		}		public bool CanExecute(object parameter)		{			return _canExecute == null || _canExecute((T)parameter);		}		public void Execute(object parameter)		{			_execute((T)parameter);		}	}	public class BaseCommand : ICommand	{		private readonly Action _execute;		private readonly Func<bool> _canExecute;		public event EventHandler CanExecuteChanged		{			add			{				if (_canExecute != null)				{					CommandManager.RequerySuggested += value;				}			}			remove			{				if (_canExecute != null)				{					CommandManager.RequerySuggested -= value;				}			}		}		public BaseCommand(Action execute)			: this(execute, null)		{		}		public BaseCommand(Action execute, Func<bool> canExecute)		{			if (execute == null)			{				throw new ArgumentNullException("execute");			}			_execute = execute;			_canExecute = canExecute;		}		public bool CanExecute(object parameter)		{			return _canExecute == null || _canExecute();		}		public void Execute(object parameter)		{			_execute();		}	}}
 |