2010-04-30 2 views
1

У меня есть простой вопрос о командах в WPF: у меня есть кнопка с ICommand, привязанная к свойству Command, и когда я нажимаю на эту кнопку, команда запускается и ничего себе не работает :)Как запустить маршрутизированную команду из указанного события?

Я хочу начать определенную команду, когда я просто нажимаю кнопку (MouseLeftButtonDown событие, которое я думаю), но я не знаю, как я могу поместить несколько команд на одну кнопку и указать событие, которое запустит эту команду.

У вас есть идея? Может быть, пользовательский контроль?

Спасибо, что вам помогли,
Antoine.

ответ

3

Вы могли бы рассмотреть основывая свой собственный класс на Button и распространив его со своим собственным набором Command, CommandTarget и CommandParameter -как свойств (возможно, даже DependencyProperty Если вы хотите, чтобы запустить команду, просто сделать это:.

void FireCommand() 
{ 
    var routedCommand = Command as RoutedCommand; 
    if (routedCommand != null) 
    { 
     routedCommand.Execute(CommandParameter, CommandTarget); 
    } 
    else if (Command != null) 
    { 
     Command.Execute(CommandParameter); 
    } 
} 
+0

Итак, я создам пользовательский элемент управления на основе кнопки с некоторым новым свойством dependecy, которое может получить ICommand, и когда у вас запущено событие MouseLeftButtonDown, я начинаю правильную команду, как вы писали ... Спасибо:) –

+0

После прочтения вашего кода я осознал проблему, с которой я столкнулся в своем собственном проект. Я не понимал, что RoutedCommand не реализует метод ICommand.Execute маршрутизируемым способом. Это имеет смысл, когда я думаю об этом сейчас, команда не знает, где она лежит внутри визуального дерева, и поэтому ей нужен второй параметр, чтобы сообщить вам, с чего начать маршрутизацию. – jpierson

 Смежные вопросы

  • Нет связанных вопросов^_^