Esto realmente depende de la arquitectura de su aplicación, pero así es como lo hago con Prism.
Primero quiero decir que es ok para que su referencia VM sea la vista siempre y cuando no se trate de una implementación concreta de la Vista, es decir, referencias por interfaz.
Me case la View y ViewModel usando la inyección de dependencia, muy similar a como se hace en StockTraderRI. Así que tengo un IView y un IViewModel. IViewModel tiene una propiedad llamada "Vista" de tipo IView.
Desde la capa de código (para mí, generalmente el controlador ... ver StockTraderRI) que funciona con sus regiones, agregue el mecanismo para eliminar su vista de la región.
Por ejemplo:
myRegion.Remove(myIViewModel.View);
Si las regiones son manejados por un controlador, es posible que desee poner un evento simple en la máquina virtual para notificar cuando una VM quiere ser "cerrada". También puede experimentar con IEventAggregator si desea utilizar un modelo de evento débil. Si la región se maneja en la VM, simplemente agregue ese código allí.
con valiosos comentarios de los miembros, i fueron capaces de codificar esto con éxito. muestra de clase de implementación se publica como una respuesta a esta pregunta. – Raj