Cela dépend vraiment de l'architecture de votre application, mais voici comment je le fais avec Prism. D'abord, je veux dire, c'est ok pour que votre VM référence la vue aussi longtemps que ce n'est pas une implémentation concrète de la vue, c'est-à-dire des références par interface.
Je marie View et ViewModel en utilisant l'injection de dépendance, très similaire à la façon dont cela se fait dans le StockTraderRI. J'ai donc un IView et un IViewModel. IViewModel a une propriété appelée "Vue" de type IView.
A partir de la couche de code (pour moi, habituellement le contrôleur ... voir StockTraderRI) qui fonctionne avec vos régions, ajoutez le mécanisme pour retirer votre point de vue de la région.
Par exemple:
myRegion.Remove(myIViewModel.View);
Si les régions sont gérées par un contrôleur, vous voudrez peut-être mettre un événement simple sur la machine virtuelle pour avertir quand une machine virtuelle veut être « fermée ». Vous pouvez également tester IEventAggregator si vous souhaitez utiliser un modèle de gestion des événements faible. Si la région est gérée dans la machine virtuelle, ajoutez simplement ce code là.
précieux commentaires des membres, i ont pu coder avec succès. exemple de classe de mise en œuvre est publié en réponse à cette question. – Raj