ICommand
Defines a command.
Occurs when changes occur that affect whether or not the command should execute.
Defines the method that determines whether the command can execute in its current state.
Defines the method to be called when the command is invoked.