Если я реализую событие PropertyChange только для одного свойства, подобного этому, будет ли уведомление автоматически охватывать другие свойства, которые ссылаются на это свойство в своем теле?
Что произошло, когда вы его попробовали ? Получили ли вы уведомление об изменении свойства для других свойств?
Работает ли оно только внутри класса или все еще работает с другим классом, которому принадлежит экземпляр уведомляющего класса?
Он вообще этого не делает, поэтому не будет делать это ни в каком другом классе.
Уведомление об изменении свойства не является магическим c. Он просто вызывает событие, устанавливая значение имени в объекте args события равным тому, которое вы передали методу OnPropertyChanged()
(в данном случае, неявно через атрибут [CallerMemberName]
).
Все, что сказано Использование таких свойств не обязательно лучший способ справиться с отключением команд. Вы не говорите, какой API вы на самом деле используете, но распространенным, который использует этот тип шаблона, является WPF. Он использует ICommand
привязки для команд. Метод ICommand.CanExecute()
должен использоваться, чтобы указать, является ли команда действительной в данный момент времени. ICommand.CanExecuteChanged
следует повышать при изменении значения этого метода. Обычно это делается любым кодом, начинающим операцию, или изменяет состояние, которое делает команду недопустимой в это время. После этого тот же код изменит состояние CanExecute()
на действительное.
Точный механизм изменения состояния команды и вызова ее события зависит от того, как вы реализуете команду. Есть много примеров, которые вы должны рассмотреть. Посмотрите, что работает лучше для вас.
Если вы используете какой-то другой API, он может иметь или не иметь аналогичный механизм. Невозможно узнать, каким будет лучший ответ в этом отношении, поскольку эта информация недоступна в вашем вопросе.