从WPF到WinForms的冒泡鼠标事件

时间:2011-06-25 02:59:28

标签: wpf mouse event-bubbling elementhost

我使用ElementHost在WinForms控件中托管WPF控件。 WinForms控件有一个上下文菜单。我想在用户右键单击WPF控件时显示上下文菜单。如何才能做到这一点?似乎鼠标事件没有从WPF冒泡到WinForms。

1 个答案:

答案 0 :(得分:4)

它不会自动冒泡,因为您可能首先在WPF控件中处理它。但是,您可以自己轻松添加。

在WPF用户控件中,公开您在鼠标右键时触发的事件:

    public event Action ShowContext;

    private void rectangle1_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (ShowContext != null)
        {
            ShowContext();
        }
    }

然后在你的winforms控件中使用元素主机,你可以这样使用它:

    public UserControl1 WpfControl { get; set; }

    public Form1()
    {
        InitializeComponent();

        WpfControl = new UserControl1();
        WpfControl.ShowContext += () => contextMenuStrip1.Show(Cursor.Position);
        elementHost1.Child = WpfControl;
     ....