Чтобы сообщить представлению (View) об изменении значения конкретного свойства из VM нужно передать его название в виде параметра:
OnPropertyChanged(nameof(TextBoxes));
Непосредственно в самих свойствах вы можете увидеть что идет вызов без передачи параметров:
OnPropertyChanged();
Дело в том, что в типичной реализации имя свойства извлекается при помощи атрибута
CallerMemberName:public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName]string prop = "")
{
// ...
}
Это не обязательно делать в set. У свойства может не быть открытого сеттера или не быть сеттера вообще. Или если свойство зависит от двух других - например, для автоматического отображения суммы значений, которые должен вводить пользователь.
В вашем случае с
TextBoxes вы не используете сеттер - его можно даже совсем убрать.