4

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

4

1 回答 1

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;
     ....
于 2011-06-25T03:28:24.587 回答