Je suis en train de transformer un projet WPF de taille moyenne en MVVM et j'ai rencontré un problème que je n'ai pas encore réussi à résoudre. Peut-être pourriez-vous m'aider?Attacher une commande avec un paramètre à l'événement KeyUp
La structure cible est .NET 3.5.1.
J'ai une vue de liste qui récupère ses éléments du modèle de vue sous-jacent. Ce modèle d'affichage expose une commande pour supprimer les éléments sélectionnés de la vue de liste. Par conséquent, le paramètre de commande est lié à la propriété SelectedItems de la vue en liste.
<ListView ItemsSource="{Binding MyItems}"
x:Name="MyListView"
SelectionMode="Extended">
</ListView>
<Button x:Name="MyRemoveButton"
Content="Remove item"
Command="{Binding RemoveItemCommand}"
CommandParameter="{Binding ElementName=MyListView, Path=SelectedItems}">
Mon intention est d'exécuter cette commande non seulement en appuyant sur un bouton, mais aussi lorsque l'événement KeyUp est tiré sur la vue de la liste et la touche pressée est « supprimer ».
j'étais proche de trouver la solution quand je suis tombé sur l'interaction déclenche dans cet exemple:
Maintenant, le problème avec cette démo est que le paramètre de commande est la touche enfoncée, mais dans mon cas J'ai besoin que le paramètre de commande soit la propriété SelectedItems et j'ai besoin que la commande s'exécute uniquement sur une clé spécifique.
Y at-il un moyen de le faire sans beaucoup de frais généraux et de la manière MVVM?
Quelque chose comme ça serait génial:
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyUp">
<local:CommandAction Command="{Binding RemoveItemCommand}"
CommandParameter={Binding ElementName=MyListView, Path=SelectedItems}
EventArgument="Key.Delete"/>
</i:EventTrigger>
</i:Interaction.Triggers>
Ce n'est pas stricte et cela est certainement une option, mais pour l'instant je veux une séparation stricte. C'est une sorte de preuve de concept et j'essaie d'explorer les types de problèmes que l'on peut rencontrer lors de l'utilisation de MVVM avec une séparation stricte. –