Что такое ViewModelLocator и каковы его плюсы и минусы по сравнению с DataTemplates?

Может ли кто-нибудь дать мне краткое описание того, что такое ViewModelLocator, как он работает и каковы плюсы и минусы его использования по сравнению с DataTemplates? Я попытался найти информацию в Google, но, похоже, существует много различных его реализаций и нет подробного списка того, что это...