La mise en œuvre de “fermer la fenêtre” commande avec MVVM

Donc ma première tentative n'avait tout le code derrière, et maintenant je suis en train de revoir mon code pour utiliser le pattern MVVM, suivant les conseils de l'MVVM dans la boîte de l'information.

J'ai créé une classe viewmodel pour correspondre à mon point de vue de classe, et je me déplace le code de la code de derrière dans le viewmodel de départ avec les commandes.

Mon premier hic, c'est d'essayer de mettre en œuvre un bouton "Fermer" qui ferme la fenêtre si les données n'ont pas été modifiés. Je l'ai affublé d'une CloseCommand pour remplacer le "onClick" méthode et tous est bon, sauf pour le cas où le code tente d'exécuter this.Close(). Évidemment, puisque le code a été déplacé à partir d'une fenêtre à une classe normale, 'ce' n'est pas une fenêtre et n'est donc pas fermer. Toutefois, selon le modèle MVVM, le viewmodel ne sais pas à propos de la vue, de sorte que je ne peux pas appeler view.Close().

Quelqu'un peut-il suggérer comment je peux fermer la fenêtre du viewmodel de commande?

  • Plusieurs options ont déjà été discutés [stackoverflow.com/questions/4376475/... de manière générale l'approche que je voudrais utiliser est le CommandParameter avec une source par rapport retour à l'appel de la Fenêtre. (Comme illustré par Simone)
  • cette solution nécessite Expression Blend? Je suis interpellés sur ce front
  • Voir comment utiliser la propriété attachée à résoudre ce ici
  • MVVM != sans code-behind.
InformationsquelleAutor mcalex | 2012-08-14