Как программно запустить команду - PullRequest
9 голосов
/ 16 ноября 2009

У меня есть ICommand, который я хочу запустить (выполнить выполнение) из кода; как мне это сделать?

Ответы [ 4 ]

24 голосов
/ 16 ноября 2009

Попробуйте вызвать метод Execute.

8 голосов
/ 16 ноября 2009

Предполагается, что есть someCommand с commandArgs:

if (someCommand.CanExecute(commandArgs))
{
    someCommand.Execute(commandArgs);
}
4 голосов
/ 16 ноября 2009

Если вы используете RoutedUICommand Выполните и CanExecute , убедитесь, что передали правильную цель, чтобы найти правильный CommandBinding.

Кроме того, если обработчики вашей команды не изменяют объекты View напрямую, рассмотрите возможность использования Kent Boogaart's DelegateCommand . Использование команд делегата переместит бизнес-логику в ViewModel, что хорошо, и они особенно удобны, если вам нужно выполнять команды непосредственно из кода и у вас нет доступа к представлению (или объекту View, из которого вы можете всплыть на ваш CommandBindings).

0 голосов
/ 16 ноября 2009

Помните, что если вам нужно вызвать другое событие внутренних компонентов, например кнопку щелчка, посмотрите методы, начинающиеся с Perform (например, PerformClick кнопки).

Другие ответы в порядке, используйте только Выполнить ...

...