Я предполагаю, что в какой-то момент вы связываете свое свойство CommandBindings
с элементом управления пользовательского интерфейса и что команда запускается из пользовательского интерфейса?
RoutedCommands
подобно ApplicationCommands.Paste
полагается на наличие CommandBinding
в родительском элементе пользовательского интерфейса, над которым запускается команда. Запрос CanExucute
команды начинается с элемента управления, на котором она вызывается (текущий фокус или цель команды), и всплывает вверх, как RoutedEvent
, в поисках соответствующего CommandBinding
. Когда он находит его, он выполняет делегат CanExecute
из привязки, чтобы вернуть искомое значение.
Поскольку в вашем тесте нет пользовательского интерфейса и нет цели для команды, вызов CanExecute
команды просто не найдет делегата и, следовательно, вернет false.
Итак, я не думаю, что ваш тест в его текущей форме будет работать без присутствия пользовательского интерфейса.
(сейчас я собираюсь проверить свою теорию - позже отредактирую!)