Понимание того, как DependencyProperty работает и реализуется - PullRequest
6 голосов
/ 16 августа 2011

Silverlight / WPF DependencyProperty включает привязку данных и указывает, когда значение свойства изменилось, без реализации INotifyPropertyChanged. Мой вопрос состоит в том, как это работает на низком уровне - как DependencyProperty или DependencyObject выполняет это уведомление об изменении, когда ни DependencyObject, DependencyProperty, ни DispatcherObject не определяют какие-либо события. Будет ли это как-то связано со свойством DispatcherObject.Dispatcher ?

Свойства зависимостей или класс DependencyObject не являются собственными поддержка INotifyPropertyChanged в целях создания уведомлений изменений в значении исходного свойства DependencyObject для привязки данных операции.

Это превосходное разъяснение было взято дословно у:

http://msdn.microsoft.com/en-us/library/ms752914.aspx

http://msdn.microsoft.com/en-us/library/ms753358.aspx

Ответы [ 2 ]

4 голосов
/ 16 августа 2011

Свойства зависимостей тесно связаны с системой привязки внутри.Таким образом, вместо «уведомления об изменении свойства» код, который устанавливает свойство зависимости, может напрямую вызываться в систему привязки и сообщать ему об обновлении.

Аналогично, такие вещи, как унаследованные / присоединенные свойства, могут быть обновлены в любомЭлементы-потомки и / или макет / мера / аранжировка могут быть обновлены.Он может даже указать любые триггеры (в стилях или шаблонах ControlTemplates) для переоценки.

Диспетчер на самом деле не связан, но может использоваться во время процесса.

Короче говоря, он запекаетсяв WPF / Silverlight.

1 голос
/ 16 августа 2011

Что ж, когда вы регистрируете DependencyProperty, вы предоставляете обратный вызов, который будет вызываться при изменении значения.

Здесь у вас есть более подробная информация.Я не думаю, что что-то еще является публичным о внутренностях WPF.Я могу ошибаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...