Cuál es la mejor manera de cambiar vistas / controles de usuario en MVVM-light y WPF?

Soy relativamente nuevo en WPF y MVVM y lo más difícil que he encontrado es cómo simplemente cambiar un control de usuario o una vista en una aplicación.

En winforms, para que un control se elimine, simplemente diga esto.Parent.Controls.Remove (this);

En WPF no hay un control primario genérico, tendría que convertirlo al tipo específico (es decir, Grid) y luego eliminarlo.

Esto también parece romper la arquitectura MVVM. También probé plantillas de datos y presentadores de contenido, que funcionan bien, excepto por el hecho de que no puedo cambiar el contexto de datos del código, ya que el contexto de datos es siempre el viewmodellocator.

¿Son las páginas la forma aceptable de hacer esto en WPF ahora? ¿Qué sucede si tuviera una cuadrícula con un control de uso personalizado y quisiera cambiarlo en función de alguna variable en el modelo de vista? Parece que las tareas más simples no se pueden realizar fácilmente en WPF.

Respuestas a la pregunta(1)

Su respuesta a la pregunta