Но только с get {} невозможно определить, доступно ли новое или другое значение, так как необходимо выполнить метод для проверки.
Проблема сводится к следующему: что меняет собственность?Метод, который изменяет свойство, должен вызывать ваш NotifyPropertyChanged
с именем свойства, что, в свою очередь, заставит WPF повторно получить значение и обновить пользовательский интерфейс.
WPF не волнует where событие PropertyChanged
возникает - оно просто прослушивает его и обновляет привязку по мере необходимости.
Редактировать в ответ на комментарий:
Звучит такэто может быть результатом выполнения некоторой операции с вашим классом Model.В этом случае обычно вы знаете, что одно или несколько свойств могут меняться, но не обязательно, какие из них.Если ваша Модель реализует INotifyPropertyChanged
, вы можете подписаться на нее и «всплывать» уведомления в пользовательском интерфейсе с помощью вашего метода NotifyPropertyChanged
.Если это не так, существует другая опция.
Если вы знаете, что одно или несколько свойств могут измениться, вы можете вызвать событие PropertyChanged
с string.Empty
в качестве PropertyName
в EventArgs.Это приведет к обновлению всех связанных свойств WPF.Вероятно, это просто вопрос вставки чего-то подобного в ваш код:
this.Model.DoSomething(); // This will change 1+ properties
this.NotifyPropertyChanged(string.Empty); // Refresh our entire UI
Однако я бы не рекомендовал делать это везде, так как это увеличивает накладные расходы - но часто это самое чистое решение, если вы ненеизвестно, какие свойства изменятся при выполнении операции.