Abriendo una nueva ventana en MVVM WPF

Tengo Button y he vinculado este botón al comando en ViewModel, por ejemplo, OpenWindowCommand. Cuando hago clic en el botón, quiero abrir una nueva ventana. Pero crear una instancia de ventana y mostrar la ventana desde el modelo de vista es una violación de MVVM. He creado una interfaz como

interface IWindowService
{
 void showWindow(object dataContext);
}

y WindowService implementa esta interfaz como

class WindowService:IWindowService
{
 public void showWindow(object dataContext)
 {
  ChildWindow window=new ChildWindow();
  window.DataContext=dataContext;
  window.Show();
  }
}

En esta clase, he especificado ChildWindow. Entonces, esta clase está estrechamente unida a la de mostrar ChildWindow. Cuando quiero mostrar otra ventana, tengo que implementar otra clase con la misma interfaz y lógica. ¿Cómo puedo hacer que esta clase sea genérica para poder pasar cualquier instancia de cualquier ventana y la clase podrá abrir cualquier ventana? No estoy usando ningún framework MVVM incorporado. He leído muchos artículos sobre StackOverflow pero no pude encontrar ninguna solución para esto.

Respuestas a la pregunta(6)

Su respuesta a la pregunta