Как изменение ResourceDictionary приводит к переоценке DynamicResource? - PullRequest
5 голосов
/ 08 августа 2011

Если словарь ресурсов недоступен для наблюдения, как работает справочник по DynamicResource?Есть ли в методах Add / Remove словаря ресурсов внутренний код, который «опрашивает» все ссылки DynamicResource и обновляет их при удалении или добавлении?

1 Ответ

9 голосов
/ 08 августа 2011

Каждый ResourceDictionary содержит три списка владельцев. Один для FrameworkElement, один для приложения и еще один для FrameworkContentElement. При доступе к свойству Resources устанавливается его владелец. Также каждый ResourceDictionary распространяет своего владельца на объединенные словари. Когда словарь меняется, он уведомляет об этом владельцев. Это уведомление фактически ищет свойства зависимости с локальными значениями, содержащими выражение ресурса. Затем каждое выражение вынуждено переоценивать.

Весь этот код является внутренним.

...