¿Qué es un ViewModelLocator y cuáles son sus pros / contras en comparación con DataTemplates?

¿Alguien puede darme un resumen rápido de lo que es un ViewModelLocator, cómo funciona y cuáles son las ventajas / desventajas de usarlo en comparación con las plantillas de datos? Intenté encontrar información en Google, pero parece que hay muchas implementaciones diferentes y no hay una lista...