-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRelayCommand.cs
57 lines (50 loc) · 1.34 KB
/
RelayCommand.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
namespace Filters
{
public class RelayCommand : ICommand
{
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested += value;
}
remove
{
CommandManager.RequerySuggested -= value;
}
}
private readonly Action execute;
private readonly Func<Boolean> canExecute;
public RelayCommand(Action execute) : this(execute, null) { }
public RelayCommand(Action execute, Func<Boolean> canExecute)
{
if (null == execute)
{
throw new ArgumentNullException("execute is null!");
}
this.execute = execute;
this.canExecute = canExecute;
}
public Boolean CanExecute()
{
return null == this.canExecute ? true : this.canExecute();
}
public void Execute()
{
this.execute();
}
Boolean ICommand.CanExecute(Object needlessParameter)
{
return this.CanExecute();
}
void ICommand.Execute(Object needlessParameter)
{
this.Execute();
}
}
}