in my WPF UI, I use RoutedCommands that I refer to in my xaml via the following code:
Command=\"viewModel:MessageListViewModel.DeleteMessagesCommand\"
Just implement the CanExecuteChanged event as follows:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
When you assign the command to a control, it subscribes to the CanExecuteChanged event. If you "redirect" it to the CommandManager.RequerySuggested event, the control will be notified whenever CommandManager.RequerySuggested is triggered.