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 に答える