При использовании команд в WPF бывает такое, что элемент (кнопка) остается неактивной не смотря на то, что e.CanExecute=true до тех пор, пока не получит фокус.
Подробнее проблема описана здесь.
А описание простого решения на русском здесь:
Если обнаруживается, что состояние команды не обновляется в нужный момент, WPF можно принудить вызывать метод CanExecute() на всех используемых командах. Это делается вызовом статического метода CommandManager.InvalidateRequerySuggested(). После этого диспетчер команд будет генерировать событие RequerySuggested для уведомления всех присутствующих в окне источников команд (кнопок, элементов меню и т.д.). Эти источники команд затем повторно опросят связанные с ними команды и соответствующим образом обновят свое состояние.
Короче, можно принудительно вызвать CanExecute() у всех элементов, даже у тех, что не в фокусе:
CommandManager.InvalidateRequerySuggested();
Также, здесь описаны другие варианты решения проблемы (у меня не подтвердились):
* у контейнера, в котором находится элемент с командой, устанавливать
FocusManager.IsFocusScope="True"* использовать TooBar или Menu, у которых это свойство установлено по-умолчанию
* указывать целевой элемент, от которого зависит состояние исходного (кнопки) элемента: CommandTarget="{Binding ElementName=_dest}"