2015-09-23 6 views
0

Я хотел бы имитировать/направить правую кнопку мыши на WPF «control».Имитация щелчка правой кнопкой мыши в wpf

Короче говоря. У меня есть Adorner, который должен реагировать на щелчок левой кнопкой мыши (так что видимый тест должен быть правдой), но в то же время я бы хотел, чтобы он был «прозрачным» для правых кликов. (Другими словами, я хотел бы, чтобы под ним находился элемент управления, чтобы получить этот щелчок - btw правой кнопкой мыши заставляет Adorner исчезать).

Я попытался поднять MouseRightButtonUp событие под управлением непосредственно под мышью (после того, как Adorner исчезает, но он, похоже, не работает). Я хотел бы избежать вызова системных функций (например, mouse_event через P/Invoke). Это можно сделать даже в wpf?

+0

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

+1

Некоторый код может помочь. Я бы подумал о том, что «MouseLeftButtonDown» обрабатывается Adorner, любой другой «MouseEvent» должен быть перенаправлен на любой базовый элемент. – xum59

+0

Почему бы вам не попробовать MouseDown Event? –

ответ

1

Насколько я помню, у меня были проблемы с событиями маршрутизации и изменением свойства Adorners IsHitTestVisible. Основная проблема заключалась в том, что, если я правильно напомню, что adorner и элементы управления находятся в разных ветвях визуального дерева, поэтому разрозненные события, порожденные на adorner, не будут попадать в ваши элементы управления.

Я не могу сказать без вас предоставления кода, но самая простая вещь, которая должна работать будет найти управление под своим положением мыши и сделать

private void myAdorner_MouseRightButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      MouseButtonEventArgs revent = new MouseButtonEventArgs(e.MouseDevice, e.Timestamp, MouseButton.Right); 
      revent.RoutedEvent = e.RoutedEvent; 
      //find you control 
      control.RaiseEvent(revent); 
     } 
Смежные вопросы