La manipulation de la fenêtre de l'événement de clôture avec WPF / MVVM Light Toolkit

J'aimerais poignée de la "Clôture" de l'événement (lorsqu'un utilisateur clique sur la partie supérieure droite du bouton "X") de ma fenêtre afin d'afficher un message de confirmation ou/et d'annuler la fermeture.

Je sais comment le faire dans le code-behind : abonnez-vous à la "Clôture" de l'événement de la fenêtre, puis utiliser la fonction "CancelEventArgs.Annuler" de la propriété.

Mais je suis en utilisant MVVM donc je ne suis pas sûr que c'est la bonne approche.

Je pense que la bonne approche serait de lier l'événement de Clôture à une Commande dans mon ViewModel.

J'ai essayé ça :

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Closing">
            <cmd:EventToCommand Command="{Binding CloseCommand}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>

Avec un associé RelayCommand dans mon ViewModel mais il ne fonctionne pas (la commande du code n'est pas exécuté).

  • Également intéressé à la belle réponse à la réponse à cette question.
  • J'ai téléchargé le code de codeplex et de débogage, il a révélé: "Impossible de convertir l'objet de type 'System.ComponentModel.CancelEventArgs' de type 'System.De Windows.RoutedEventArgs'." Il fonctionne très bien si vous ne pas vous voulez le CancelEventArgs mais cela ne veut pas répondre à votre question...
  • Je devine que votre code ne fonctionne pas parce que le contrôle que vous avez attaché votre déclencheur n'est pas un événement de Clôture. Vos données de contexte n'est pas une fenêtre...C'est probablement un modèle de données avec une grille ou quelque chose, qui n'a pas d'événement de Clôture. Donc dbkk la réponse est la meilleure réponse dans ce cas. Cependant, je préfère l'Interaction/EventTrigger approche lorsque l'événement est disponible.
  • Le code fonctionne correctement sur un événement Chargé, par exemple.