2009-06-15 4 views

ответ

10

Не предполагайте, что CanExecute будет вызван с помощью функции Execute. Интерфейс для ICommand не подразумевает, что он вызывает CanExecute при вызове Execute, поэтому, если для вас важно, чтобы он выполнялся только тогда, когда CanExecute является истинным, просто проверьте его самостоятельно.

Кроме того, сканирование декомпилированного кода для RoutedUICommand, я не вижу нигде, который проверяет CanExecute внутри Execute.

На самом деле ответственность покупателя заключается в том, чтобы определить, когда вызывать Execute/CanExecute.

1

Вы должны вызвать CanExecute вручную, если вам нужно, Execute не проверяет!

0

Вы не должны предполагать, что CanExecute вызывается методом Execute, так как нет ничего, чтобы обеспечить соблюдение этого поведения. Поэтому ИМО вы должны позвонить по телефону CanExecute самостоятельно