WPF: Comment ouvrir un ContextMenu de tous les secteurs d'une Grille de contrôle
J'essaye d'ajouter un ContextMenu à des éléments d'une liste dans WPF;
<ListBox.ItemTemplate>
<DataTemplate>
<Border>
<Grid>
<Grid.ContextMenu>
<ContextMenu>
<MenuItem Header = "Menu item 1"/>
<MenuItem Header = "Menu item 2"/>
<MenuItem Header = "Menu item 3"/>
</ContextMenu>
</Grid.ContextMenu>
........
........
</Grid>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
Le problème est que le ContextMenu ne s'ouvre lorsque vous cliquez sur le contexte réel de la Grille, je veux être en mesure d'ouvrir le menu en cliquant n'importe où sur la zone de liste de l'élément.
Dois-je enveloppement de la Grille dans un autre contrôle?
InformationsquelleAutor Andronicus | 2010-10-14
Vous devez vous connecter pour publier un commentaire.
Il a été quelques mois depuis que j'ai fait tout solide WPF développement (a été déplacé de développement d'applications à un véritable jeu d'équipe).
De la mémoire, vous souhaitez définir le
ContextMenu
bien sur laBorder
et puis définissez laBorder.Background=Transparent
. Réglage de l'arrière-plan transparent assure qu'il sera de participer à la détection de collision.Autre solution, serait de s'assurer que vous
Grid
élément s'étend horizontalement et verticalement pour tenir le récipient....
Également tirer les
ContextMenu
comme une ressource statique, de sorte que se sera plus facile de trouver/modifier dans l'avenir.Espérons que cette aide (et ma mémoire ne me manquent).
EDIT: j'ai répondu à une question similaire sur StackOverflow précédemment, veuillez voir ma réponse sur WPF: l'Affichage d'un Menu Contextuel pour un GridView Articles. Cette réponse est plus complète, puisqu'elle définit le focus sur l'
ListItem
.Comme vous l'avez déjà réalisé, grâce à Dennis, - vous devez définir un certain arrière-plan. Oui, arrière-plan transparent est également OK:
RÉFÉRENCE: https://blogs.msdn.microsoft.com/domgreen/2008/12/08/wpf-hit-testing-with-event-bubbling/