Чтобы расширить комментарий Джастина Нисснера , я бы использовал триггер для достижения этой анимации, так как он полностью связан с пользовательским интерфейсом.
Подумайте об этом:
- Куда бы вы поместили код, чтобы, когда кто-то наводил мышку на кнопку, он подсвечивался?
- А как насчет кода для "нажатия" этой кнопки при нажатии?
Это и ваш вопрос - все варианты темы, поэтому я бы сказал, сделайте это в графическом интерфейсе.
Однако есть одно исключение из этого правила. Если «анимация» - это анимация обработки, то, возможно, стоит связать ее с ViewModel, чтобы ViewModel могла контролировать продолжительность анимации, пока она что-то обрабатывает. В противном случае сделайте это в графическом интерфейсе.
РЕДАКТИРОВАТЬ: на основе вашего комментария. Итак, анимация должна запускаться из свойства ViewModel, а не события нажатия кнопки. Click должен начать обработку в ViewModel с помощью команды, а код выполнения для этой команды должен установить свойство флага обработки в ViewModel. Затем представление может связываться с этим флагом обработки и отображать индикатор выполнения или что-либо еще, когда этот флаг установлен.