Событие с пузырьковой мышью из WPF в WinForms - PullRequest
4 голосов
/ 25 июня 2011

У меня есть элемент управления WPF, размещенный внутри элемента управления WinForms с помощью ElementHost.Элемент управления WinForms имеет контекстное меню.Я хочу показать контекстное меню, когда пользователь щелкнет правой кнопкой мыши на элементе управления WPF.Как это может быть сделано?Кажется, событие мыши не передается из WPF в WinForms.

1 Ответ

4 голосов
/ 25 июня 2011

он не всплывает автоматически, как вы могли бы сначала обработать в элементе управления WPF. Тем не менее, вы можете легко добавить это самостоятельно.

В пользовательском элементе управления WPF выставьте событие, которое вы вызываете правой кнопкой мыши вверх:

    public event Action ShowContext;

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

Тогда в вашем элементе управления winforms с элементом host вы можете использовать его так:

    public UserControl1 WpfControl { get; set; }

    public Form1()
    {
        InitializeComponent();

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