Для кнопок и других триггеров я использую интерфейс ICommand, предоставляемый WPF, аналогично DelegateCommand, с которым вы связались. (на самом деле я использую команду реле как определено здесь )
При изменении значения (перемещение ползунка, ввод в текстовое поле) используйте привязки и поведение дескриптора, когда свойство в ViewModel установлено.
Как правило, я нахожу, что причин использовать RoutedEvents в приложении MVVM очень мало, но это приятное знакомое удобное одеяло, когда вы не можете достичь того, чего хотите, с помощью новых методов, специфичных для WPF.