Как среда выполнения Silverlight / WPF знает, как установить свойство зависимости? - PullRequest
4 голосов
/ 30 марта 2011

Итак, я думаю Я понимаю, что такое свойство зависимостей и зачем оно нам нужно - это свойства, управляемые библиотеками Silverlight / WPF, так что среда выполнения может иметь некоторый контроль над тем, как они установлены, что позволяетчтобы они делали такие вещи, как предоставление анимации приоритета над другими типами запросов к свойствам и другим изящным функциям.

Мой вопрос: как фреймворк знает, как это сделать?Если свойства зависимостей всегда доступны через их методы получения / установки для их родительских объектов (которые имеют значение GetValue() и SetValue()), то как хранилище зависимостей * может знать , кто делает запрос, чтобы расставить приоритетыэто?

Извините, если это очень простой / очевидный вопрос.

* Есть имя для контейнера, который управляет свойствами зависимостей?Я думаю, что реестр DP, учитывая, что мы должны их зарегистрировать?

1 Ответ

2 голосов
/ 30 марта 2011

Да, есть реестр, но все скрыто. И нет, свойства зависимостей вообще не устанавливаются через Getter и Setter, вместо этого DependencyObject имеет методы с именами GetValue и SetValue, где вы фактически передаете дескриптор своему свойству зависимости. Предположим, что у вашего DP есть реестр, и у него есть словарь и дескриптор, чтобы ваш DP (объект DP, который вы получаете после регистрации) был ключом.

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

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

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