Как я связываю команду с, например, правую кнопку мыши в ControlTemplate в WPF?

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

1
задан absence 4 June 2010 в 16:51
поделиться

1 ответ

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

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

 <ControlTemplate ...>
   <Decorator>

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

     ... content here ...

   </Decorator>
 </ControlTemplate>

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

2
ответ дан 3 September 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: