The only thing I would like to add to Rich McGuire's answer is that RoutedCommands (and their more common descendant RoutedUICommand must be associated with event handlers work correctly.
In most MVVM implementations, I came across an attempt to use binding to ViewModel, and therefore ViewModel (and not View) owns CanExecute / Execute logic.
In contrast, event handlers transfer this load to the view. Processing can then be passed to the ViewModel, but that means a slightly higher degree of connection between the ViewModel and the View (cast + method call, etc.).
micahtan Jul 16 '09 at 12:49 2009-07-16 12:49
source share