Я проверял это, вы правы.Теперь я искал его в Интернете и обнаружил this .
Извините, что так долго не отвечал, на самом деле вы столкнулись с еще одним скрытым аспектом WPF , то есть механизм связывания данных WPF будет привязывать данные к экземпляру PropertyDescriptor , который переносит свойство источника, если исходный объект является простым объектом CLR и не реализует интерфейс INotifyPropertyChanged .И механизм привязки данных попытается подписаться на событие измененного свойства с помощью метода PropertyDescriptor.AddValueChanged ().И когда целевой связанный элемент данных изменяет значения свойства, механизм привязки данных вызовет метод PropertyDescriptor.SetValue () для передачи измененного значения обратно в исходное свойство и одновременно вызовет событие ValueChanged для уведомления других подписчиков (в этом случаедругие подписчики будут TextBlocks в ListBox.
И если вы реализуете INotifyPropertyChanged, вы несете полную ответственность за реализацию уведомления об изменении в каждом установщике свойств, которые должны быть данными, связанными с пользовательским интерфейсом.изменение не будет синхронизировано, как вы ожидаете.
Надеюсь, это немного прояснит ситуацию.
Так что в принципе вы можете делать это, пока это простоОбъект CLR. Довольно аккуратный, но совершенно неожиданный - и за последние годы я немного поработал над WPF. Вы никогда не прекращаете изучать новые вещи, верно?
Как подсказал Хасан Хан, вот другая ссылка к довольно интересной статьеs subject.
Примечание работает только при использовании привязки .Если вы обновите значения из кода , об изменении не будет сообщено .[...]
WPF использует гораздо более легкий класс PropertyInfo при связывании.Если вы явно реализуете INotifyPropertyChanged, все, что нужно сделать WPF, - это вызвать метод PropertyInfo.GetValue, чтобы получить последнее значение.Это немного меньше работы, чем получение всех дескрипторов.Дескрипторы в конечном итоге стоят в 4 раза больше памяти классов информации о свойствах.[...]
Реализация INotifyPropertyChanged может быть довольно трудоемкой работой по разработке.Однако вам нужно будет взвесить эту работу в сравнении с объемом времени выполнения (память и ЦП) вашего приложения WPF. Самостоятельное внедрение INPC позволит сэкономить ЦП и память времени выполнения .