diff SilverlightGlimpse/SilverlightValidation/Commands/RelayCommand.cs @ 69:a0bcd783e612

Latest work
author Steven Hollidge <stevenhollidge@hotmail.com>
date Mon, 23 Apr 2012 11:06:10 +0100
parents
children 86ed4919b126
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SilverlightGlimpse/SilverlightValidation/Commands/RelayCommand.cs	Mon Apr 23 11:06:10 2012 +0100
@@ -0,0 +1,40 @@
+using System;
+using System.Windows.Input;
+
+namespace SilverlightValidation.Commands
+{
+    public class RelayCommand : ICommand
+    {
+        public event EventHandler CanExecuteChanged = delegate { };
+
+        readonly Action<object> _execute;
+        readonly Predicate<object> _canExecute;
+
+        public RelayCommand(Action<object> execute,
+                            Predicate<object> canExecute = null)
+        {
+            if (execute == null) throw new ArgumentNullException("execute");
+
+            _execute = execute;
+            _canExecute = canExecute;
+        }
+
+
+        public void UpdateCanExecuteCommand()
+        {
+            CanExecuteChanged(this, new EventArgs());
+        }
+
+
+        public bool CanExecute(object parameter)
+        {
+            return _canExecute == null || _canExecute(parameter);
+        }
+
+
+        public void Execute(object parameter)
+        {
+            _execute(parameter);
+        }
+    }
+}