Well, I think there is no solution .
CommandBindings are not verifiable, which is easy and to introduce WPF class dependencies in the ViewModel, which is not very good. Therefore, I would not use them.
Both DelegateCommand and CommandSinkCommand (Josh Smith's solution) are good IMO ways. They are not completely different, and not one of them is superior to the others. Although, I noticed that the CommandSink version does not always work when command routing becomes more complicated (especially when using DataTemplates).
You can even combine them: use DelegateCommand and optionally use the JoshSmith version so you can combine the benefits of both. The only thing you need - some helper classes - is not very difficult to implement.
Much more important is a match in your application: if you decide what you want to use, you must follow this path through your entire application.
Matthias
source share