Was ist ein ViewModelLocator und welche Vor- und Nachteile hat er im Vergleich zu DataTemplates?

Kann mir jemand eine kurze Zusammenfassung geben, was ein ViewModelLocator ist, wie er funktioniert und welche Vor- und Nachteile er im Vergleich zu DataTemplates hat? Ich habe versucht, Informationen bei Google zu finden, aber es scheint viele verschiedene Implementierungen davon zu geben und...