Comment déclencher la commande ViewModel pour un événement de bouton spécifique
Comment une commande sur un ViewModel être invoquée par un événement spécifique d'un bouton, comme MouseDoubleClick
?
source d'informationauteur Smaug
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
EventTrigger
dans le Système.De Windows.L'interactivité espace de noms, qui fait partie de la soi-disant Prisme cadre. Si vous êtes juste de commencer avec MVVM, ne pas trop s'occuper de Prism maintenant, mais gardez à l'esprit pour plus tard. De toute façon, vous pouvez en acier de laEventTrigger
Il fonctionne comme ceci:
De référence de l'assemblée System.Windows.Interactivity.dll
En XAML, référence de l'espace de noms:
Puis dans votre Bouton ou tout autre contrôle, ajoutez un EventTrigger comme ceci:
De cette façon, vous liez votre événement à un Commande sur votre DataContext.
Remarque
De clarifier l'utilisation, ici, est une sorte d'exemple réel, y compris le ViewModel. La fiction exigence est de permettre à l'utilisateur de sélectionner un élément dans une liste, puis effectuer une commande qui prend l'élément sélectionné comme paramètre:
Et qui serait le ViewModel. Notez la façon dont le paramètre de la commande est utilisée dans l'exemple avec une version générique d'un
DelegateCommand
objet que vous obtenez dans chaque MVVM cadre (parfoisRelayCommand
). Cette classe prend le type du paramètre requis comme un paramètre générique (iciItemViewModel
) et nécessite une méthode qui prend un paramètre correspondant (iciExecuteDoSomethingWithItem(ItemViewModel ...)
). Le reste est WPF magic: L'oject à laquelle leCommandParameter
de propriété est lié dans votre XAML sera transmis en tant que paramètre dans votreExecute(...)
fonction.Amusez-vous avec l'apprentissage de MVVM, ça vaut le coup.
vous pouvez utiliser attaché de commande comportements
=> http://geekswithblogs.net/HouseOfBilz/archive/2009/08/21/adventures-in-mvvm-ndash-generalized-command-behavior-attachments.aspx
Vous avez besoin de faire beaucoup de plomberie vous-même si vous allez utiliser de Commandement et de Liaison des Événements à partir de la boîte de WPF. Vous pouvez gagner beaucoup de cadre existant comme MVVM Light Toolkitou Cliburn Microqui fournissent déjà de commande et même liaison.