2011-06-25 5 views
4

J'ai un contrôle WPF hébergé dans un contrôle WinForms en utilisant ElementHost. Le contrôle WinForms a un menu contextuel. Je veux montrer le menu contextuel lorsque l'utilisateur clique droit sur le contrôle WPF. Comment cela peut-il être fait? Il semble que l'événement mouse ne soit pas passé de WPF à WinForms.Événement Mouse Mouse de WPF à WinForms

Répondre

4

Il n'est pas lancé automatiquement, comme vous l'avez peut-être déjà traité dans le contrôle WPF. Cependant, vous pouvez facilement l'ajouter vous-même.

Dans votre contrôle utilisateur WPF, exposer un événement que vous déclenchez sur la souris jusqu'à:

public event Action ShowContext; 

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

Ensuite, dans votre WinForms contrôle avec l'hôte d'élément que vous pouvez l'utiliser comme ceci:

public UserControl1 WpfControl { get; set; } 

    public Form1() 
    { 
     InitializeComponent(); 

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