Это неправильная реализация MVVM, поскольку у вас есть логика приложения, закодированная в слой View.
Стандартным подходом было бы иметь свойство Command в ViewModel, а затем связать Button.Command с ViewModel.Command. Это позволит вам обрабатывать обновления в ViewModel и даст вам возможность написать любой дополнительный код, который вам нужно написать.
Чтобы ответить на ваш вопрос, если вы используете MVVM, свойства, отображаемые в представлении, действительно существуют в ViewModel, поэтому вы должны иметь возможность достаточно легко обрабатывать PropertyChanged в ViewModel, используя this.PropertyChanged += new PropertyChangedEventHandler(ViewModel_PropertyChanged);