MVVM muestra una nueva ventana de VM cuando se separan proyectos

Mi pregunta involucra algo sobre lo que se crean mil y un temas, y si pasé por alto una respuesta a mi pregunta, lo siento, pero por lo que parecía, ninguno realmente podría responder mi pregunta. Por ejemplo:Abriendo una nueva ventana en MVVM WPF

Las respuestas están bien si usa solo un proyecto WPF (incluidos modelos, vms y vistas) pero como estoy aprendiendo a implementar MVVM de la manera correcta (y he leído varias veces que la mejor práctica es crear una clase separada lib (dll) para modelo, modelo de vista y un proyecto de interfaz gráfica de usuario separado) que no parece funcionar en mis ojos porque si quiero crear una interfaz como IWindowService (descrito en la URL anterior y tambiénaquí, Es imposible acceder a la clase Window o Control porque entonces debería tener una referencia al proyecto de interfaz gráfica de usuario y todo el objetivo del patrón está arruinado.

Entonces, mi pregunta es cómo mostrar una nueva ventana (con un nuevo modelo de vista) desde, por ejemplo, el MainViewModel, respetando los principios MVVM y los proyectos separados.

Un ejemplo más profundo de lo que estoy tratando de lograr:

Tengo la siguiente estructura:

MODELO (proyecto dll)
Perfil

MODELO DE VISTA (proyecto dll)
MainViewModel
AddProfileViewModel

VER (WPF) (proyecto exe)
Ventana principal
AddProfileWindow

Abro MainWindow y quiero presionar el botón AddProfile, luego AddProfileWindow debe aparecer con el AddProfileViewModel adjunto.

Respuestas a la pregunta(2)

Su respuesta a la pregunta