Выполнение перенаправленных команд WPF вручную - PullRequest
2 голосов
/ 15 июня 2009

При выполнении пользовательского RoutedUICommand вручную из выделенного кода, например:

MyCommands.MyCommand.Execute(parameter, target)

мне нужно сначала вызвать метод CanExecute или это уже сделано внутри метода Execute?

Ответы [ 3 ]

10 голосов
/ 15 июня 2009

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

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

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

1 голос
/ 15 июня 2009

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

0 голосов
/ 15 июня 2009

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

...