diff options
Diffstat (limited to 'src/WixToolset.WixBA/RelayCommand.cs')
-rw-r--r-- | src/WixToolset.WixBA/RelayCommand.cs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/WixToolset.WixBA/RelayCommand.cs b/src/WixToolset.WixBA/RelayCommand.cs new file mode 100644 index 00000000..ecc482da --- /dev/null +++ b/src/WixToolset.WixBA/RelayCommand.cs | |||
@@ -0,0 +1,45 @@ | |||
1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. | ||
2 | |||
3 | namespace WixToolset.UX | ||
4 | { | ||
5 | using System; | ||
6 | using System.Diagnostics; | ||
7 | using System.Windows.Input; | ||
8 | |||
9 | /// <summary> | ||
10 | /// Base class that implements ICommand interface via delegates. | ||
11 | /// </summary> | ||
12 | public class RelayCommand : ICommand | ||
13 | { | ||
14 | private readonly Action<object> execute; | ||
15 | private readonly Predicate<object> canExecute; | ||
16 | |||
17 | public RelayCommand(Action<object> execute) | ||
18 | : this(execute, null) | ||
19 | { | ||
20 | } | ||
21 | |||
22 | public RelayCommand(Action<object> execute, Predicate<object> canExecute) | ||
23 | { | ||
24 | this.execute = execute; | ||
25 | this.canExecute = canExecute; | ||
26 | } | ||
27 | |||
28 | public event EventHandler CanExecuteChanged | ||
29 | { | ||
30 | add { CommandManager.RequerySuggested += value; } | ||
31 | remove { CommandManager.RequerySuggested -= value; } | ||
32 | } | ||
33 | |||
34 | [DebuggerStepThrough] | ||
35 | public bool CanExecute(object parameter) | ||
36 | { | ||
37 | return this.canExecute == null ? true : this.canExecute(parameter); | ||
38 | } | ||
39 | |||
40 | public void Execute(object parameter) | ||
41 | { | ||
42 | this.execute(parameter); | ||
43 | } | ||
44 | } | ||
45 | } | ||