2009-08-11 6 views
2

J'ai un contrôle WPF ListView avec un ContextMenu écrit en code XAML. Avec chaque clic-droit sur le ListView le ContextMenu est affiché même s'il n'y a aucun élément dans le ListView.WPF: Suppress ContextMenu pour ListView

Ceci est un comportement que je ne veux pas. Le ContextMenu ne doit s'ouvrir que s'il y a des éléments dans le ListView. Je n'ai aucun problème à compter les éléments mais je ne trouve pas le bon événement pour supprimer le ContextMenu.

Comment puis-je faire cela?

Répondre

6

gérer l'événement ContextMenuOpening du ListView pour annuler le menu si la liste est vide:

private void listView_ContextMenuOpening(object sender, ContextMenuEventArgs e) 
    { 
     if (listView.Items.Count == 0) 
      e.Handled = true; 
    } 
+0

+1 Pour avoir une meilleure et réponse plus simple que le mien. –

+0

Merci. Cela fonctionne comme il se doit. – TalkingCode

0

Mes compétences WPF sont encore au niveau novice, donc ce n'est peut-être pas la meilleure réponse.

Je lierais la propriété ListView ContextMenu à une propriété dans le code-behind. Cette propriété peut vérifier votre zone de liste et renvoyer la valeur null ou le menu contextuel approprié, le cas échéant. Puisque tout cela est basé sur les détails au niveau de la vue, il ne touche pas à votre logique métier et entraîne le comportement que vous souhaitez.

Faites-moi savoir si vous voulez un exemple de code pour cette approché