Указание неявного DataTemplate, как вы делаете в своем вопросе, действительно связывает вашу View-Model с одним View.Вы можете переопределить это на любом уровне управления, поэтому у вас может быть:
<Window.Resources>
<DataTemplate DataType="{x:Type vm:AgeIndicatorViewModel}">
<v:AgeIndicatorView2 />
</DataTemplate>
</Window.Resources>
Это изменит представление, примененное к модели представления для данного окна.Это можно сделать на любом элементе управления на любом уровне.
Преимущество выполнения этого на уровне приложения состоит в том, что оно применяется ко всем окнам в вашем приложении.Хотя мой приведенный выше пример будет применен только к одному окну.
В общем, ресурсы приложения - лучшее место для их определения.Поскольку, если у вас несколько окон (то есть Window1 и Window2), то ваша модель представления всегда будет использовать неявный DataTemplate.