Все написано. Создал класс ViewModel, который реализует интерфейс INotifyPropertyChanged. Когда метод из этого интерфейса в сеттере свойства вызовешь, тогда биндинг и увидит обновление. Ещё есть свойства зависимостей (Dependency Property), они когда меняются, тогда и биндинг реагирует на изменения. Там из коробки без интерфейсов работает. Свойства зависимостей обычно объявляют как свойства контроллов.