¿Qué es un ViewModelLocator y cuáles son sus ventajas y desventajas en comparación con DataTemplates?

¿Puede alguien darme un resumen rápido de lo que es un ViewModelLocator, cómo funciona y cuáles son las ventajas y desventajas de usarlo en comparación con DataTemplates?

He intentado encontrar información en Google, pero parece que hay muchas implementaciones diferentes y no hay una lista estricta de lo que es y las ventajas y desventajas de usarla.

Respuestas a la pregunta(3)

Su respuesta a la pregunta