在wpf中模拟右键单击

Simulating a right click in wpf

我想 simulate/route 右键单击​​ WPF "control"。

长话短说。我有一个 Adorner 应该对左键单击做出反应(因此命中测试可见必须为真)但同时我希望它是 "transparent" 用于右键单击。 (换句话说,我希望它下面的控件可以接收此点击 - 顺便说一下,右键单击会使 Adorner 消失)。

我试图直接在鼠标下的控件上引发 MouseRightButtonUp 事件(在 Adorner 消失后但它似乎不起作用)。我想避免调用系统函数(如 mouse_event 到 P/Invoke)。甚至可以在 wpf 中完成吗?

据我所知,我在路由事件和更改 Adorners IsHitTestVisible 属性 时遇到了麻烦。主要问题是,如果我没记错的话,装饰器和控件位于可视化树的不同分支上,因此在装饰器上产生的路由事件不会进入您的控件。

如果你不提供代码,我不能说太多,但最简单的事情应该是在你的鼠标位置下找到一个控件,然后做

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