user2184057
user2184057

Reputation: 964

Simulating a right click in wpf

I would like to simulate/route right click on a WPF "control".

To make a long story short. I have an Adorner which should react to left click (so is hit test visible must be true) but at the same time I would like it to be "transparent" for the right clicks. (In another words i would like for a control under it to receive this click - btw right click makes Adorner disappear).

I tried to raise MouseRightButtonUp event on control directly under mouse (after Adorner disappears but it doesn't seem to work). I would like to avoid calling system functions (like mouse_event through P/Invoke). Can it be even done in wpf?

Upvotes: 0

Views: 1448

Answers (1)

netaholic
netaholic

Reputation: 1385

As far as I remember, I had troubles with routing events and changing Adorners IsHitTestVisible property. The main problem was, if I recall it correctly, that adorner and controls are on different branches of visual tree, so routed events spawned on the adorner won't make it to your controls.

I can't say much without you providing the code, but the simplest thing that should work would be to find a control under your mouse position and do

 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);
        }

Upvotes: 1

Related Questions