Не упускайте из виду тот факт, что XAML является кодом . Это декларативно и все такое, но это все еще язык программирования. На самом деле, он проходит преобразование в C # или Visual Basic, прежде чем он превращается в IL для компиляции .NET.
Я повторю комментарий Скотта Уитлока: MVVM - отличный способ отделить проблемы и сосредоточиться на архитектурных деталях. Это действительно очень хорошо, чтобы поместить что-то в ваш код, особенно то, что он описывает. Если у вас нет требования отделять дизайнера от разработчика, адаптируйте шаблон MVVM к вашим конкретным потребностям; не пытайтесь заставить себя быть чистым или идеалистическим в этом.
Также вполне нормально помещать вызовы методов ViewModel прямо в коде View, если вам не нужна гибкость управления с классами ICommand. Или, если вы знаете, что создаваемый вами вид всегда будет привязан к создаваемому вами классу ViewModel. Или вы могли бы пойти дальше, определить интерфейс для вашей ViewModel и привязать только к реализациям этого интерфейса. Тогда вы все равно можете поменять ViewModel, когда захотите.
В таком духе.