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/...
Jetez un oeil autour de stackoverflow.com/questions/1013558/... et stackoverflow.com/questions/2617122/...
OriginalL'auteur M.E. | 2012-06-18
Vous devez vous connecter pour publier un commentaire.
H. B. est droit. mais vous pouvez également utiliser RelativeSource Liaison
OriginalL'auteur blindmeis
ContextMenus
êtes déconnecté, vous ne pouvez pas utiliserElementName
liaisons. Une solution serait d'utiliserBinding.Source
etx:Référence
qui vous oblige à extraire des parties que l'utiliser pour être dans les ressources (en raison des problèmes de dépendances cycliques). Vous pouvez simplement mettre l'ensemble du menu contextuel.Un exemple:
OriginalL'auteur H.B.
Ce travail pour moi CommandParameter="{Binding}"
OriginalL'auteur Vivek Malik