You need to attach some CommandBinding
for that command otherwise it will be disabled
The actual logic that determines if a RoutedCommand can execute on the current command target is not contained in the CanExecute methods, rather CanExecute raises the PreviewCanExecute and the CanExecute events which tunnel and bubble through element tree looking for a object with a CommandBinding. If a CommandBinding for that RoutedCommand is found, then the CanExecuteRoutedEventHandler attached to CommandBinding is called. These handlers supply the programming logic for determining if the RoutedCommand can execute or not.
Without CommandBinding
CommandManager.CanExecute
event will always came back as false and your button will be disabled