Co to jest ViewModelLocator i jakie są jego zalety / wady w porównaniu z DataTemplates?

Czy ktoś może mi dać krótkie podsumowanie tego, czym jest ViewModelLocator, jak działa i jakie są zalety / wady korzystania z niego w porównaniu z DataTemplates? Próbowałem znaleźć informacje w Google, ale wydaje się, że jest wiele różnych ich implementacji i nie ma listy szczegółów, co to jest i...