2011-03-21 4 views
4

J'ai une question avec le "ContextMenu" dans WPF. Existe-t-il un moyen de faire apparaître le menu contextuel uniquement si un "Shift-Right-Click" a été effectué? J'ai regardé partout pour cela. Le ContextMenu semble seulement pouvoir apparaître quand un "clic-droit" est fait.WPF ContextMenu utilisant (Maj-Clic-Droit)

Quelqu'un at-il une idée?

Répondre

6

Try this .... propriétés de votre menu contextuel XAML devrait ressembler à ceci ...

<ElementToWhichContextMenuIsAttached ContextMenu="{StaticResource MyContextMenu}" 
            ContextMenuOpening="MyContextMenuOpening"/> 

Et votre code derrière ressemblera à ceci.

/// <summary> 
    /// This will suppress the context menu if the shift key is not pressed 
    /// </summary> 
    private void MyContextMenuOpening(object sender, ContextMenuEventArgs e) 
    { 
     // Show context menu as handled if no key is down. 
     e.Handled = !(Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift)); 
    } 
+0

Sweet ça marche tnx! BTW vous n'avez pas besoin d'utiliser un StaticResource, vous pouvez simplement le définir comme le contenu, mais "ContextMenuOpening" sera le même que vous l'avez. Je l'utilise dans un contrôle infragistics, donc je dois le faire de cette façon. – zezba9000

+0

True. C'est justement l'exemple que j'avais le plus rapidement à portée de main ... –