Are they a good thing?
Why are they good?
The last answer at this SO topic says:
commands are not linked to the caller, so same command is not dependent and can be called from menu item, toolbar button, keyboard, etc.
This seems a bit woolly to me. I agree that CanExecute is cool but this alone may not be enough to justify their use.
Also, how do you use them? We can create Commands, implement ICommand, use a static class or a RelayCommand (and more).