Диспетчер визуальных состояний используется для управления состоянием (на удивление). Например, ваша кнопка может быть разной:
- Наведите курсор мыши
- Мышь вниз
- Disabled
- Включено
Ваш код на самом деле не должен знать об этом, поэтому все визуальные состояния вашего приложения должны храниться в XAML.
Также визуальные менеджеры состояния помогают сократить ваш код, который более подвержен ошибкам.
А что касается событий, то, на самом деле, сейчас я чаще использую команды, я считаю, что они более полезны, чем сами по себе события.