Как связать команду, например, с правая кнопка мыши в ControlTemplate в WPF? - PullRequest
1 голос
/ 04 июня 2010

У меня есть пользовательский класс, производный от Control, и модель представления. Пользователь может выполнить несколько действий с этим элементом управления, и я думаю, что лучше всего реализовать их как объекты RoutedCommand или производные объекты ICommand в модели представления, чтобы шаблоны ControlTemplate могли с ними связываться. Привязка команды к кнопке в одном ControlTemplate должна быть простой, но как я могу связать команду, например, с правая кнопка мыши в другом ControlTemplate? Вероятно, участвует MouseGesture, но мне трудно собрать все воедино.

1 Ответ

2 голосов
/ 05 июня 2010

A MouseGesture участвует, но вам не нужно явно его создавать. Вы можете использовать MouseBinding, который создаст для вас MouseGesture под капотом.

Вам нужен UIElement, чтобы прикрепить вашу привязку к. Вот как это можно сделать с помощью отдельного декоратора.

 <ControlTemplate ...>
   <Decorator>

     <Decorator.InputBindings>
       <MouseBinding MouseAction="RightClick" Command="..." />
     </Decorator.InputBindings>

     ... content here ...

   </Decorator>
 </ControlTemplate>

Скорее всего, ваш ControlTemplate использует панель, такую ​​как DockPanel или Grid для разметки, и в этом случае вы можете прикрепить к ней привязку вместо добавления Decorator.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...