2011-06-25 57 views
4

我有一個使用ElementHost的WinForms控件內託管的WPF控件。 WinForms控件有一個上下文菜單。我想在用戶右鍵單擊WPF控件時顯示上下文菜單。如何才能做到這一點?看起來鼠標事件不是從WPF冒泡到WinForms。從WPF到WinForms的泡泡鼠標事件

回答

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; 
    ....