menu contextuel pour supprimer des éléments dans la listview

J'ai une ListView qui affiche une liste de valeurs de chaîne. Je veux ajouter une entrée du menu contextuel pour chaque élément de la liste pour supprimer l'élément sélectionné. Mon XAML ressemble à ceci:

<ListView x:Name="itemsListView" ItemsSource="{Binding MyItems}">
  <ListView.ContextMenu>
    <ContextMenu>
      <MenuItem Header="Remove"
                Command="{Binding RemoveItem}"
                CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}" />
    </ContextMenu>
  </ListView.ContextMenu>
</ListView>

Le problème est que le CommandParameter valeur est toujours null. J'ai ajouté un bouton pour supprimer l'élément sélectionné de vérifier si ma commande fonctionne. Le bouton a exactement la même liaison et suppression des éléments via le bouton fonctionne. Le bouton ressemble à ceci:

<Button Content="Remove selected item"
        Command="{Binding RemoveItem}"
        CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}"/>

La commande ressemble à ceci:

private ICommand _removeItem;

public ICommand RemoveItem
{
  get { return _removeItem ?? (_removeItem = new RelayCommand(p => RemoveItemCommand((string)p))); }
}

private void RemoveItemCommand(string item)
{
  if(!string.IsNullOrEmpty(item))
    MyItems.Remove(item);  

}

Des idées pourquoi l'élément sélectionné est null lors de l'ouverture du menu contextuel? Peut-être un problème de focus de la listview?

Jetez un oeil dans votre fenêtre de Sortie, je parie que tu vas trouver une liaison de message d'erreur. Depuis un ContextMenu est dans une nouvelle fenêtre, je ne suis pas sûr qu'il peut accéder à itemsListView.
Jetez un oeil autour de stackoverflow.com/questions/1013558/... et stackoverflow.com/questions/2617122/...

OriginalL'auteur M.E. | 2012-06-18