The magic here is, the declaration of DependencyProperty
is static
not its value
(i.e the memory storage). The declaration that you add with static
keyword is just the identifier(key) of the DependencyProperty
for a particular DependencyObject
. As same identifier/key can be used by all instances of the DependencyObject to identify the property value hence it makes sense to make it static
.
On the other hand, when we set the value of DependancyProperty
by calling the SetValue
on DependancyObject
instance, then each instance of DependancyObject
on which the SetValue is called will store its local value of the Property. This is handled internally by the DependancyObject
class which maintain sort of Dictionary
which has the mapping between the DependancyProperty
identifier and the local value.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…