|   |      1 
                                  2
                             我看到了这一要求背后的两个原因: 
 | 
|   |      2 
                                  7
                             依赖属性是静态的,这是因为WPF中的一个键优化:WPF中的许多控件都有数十个属性,如果不是数百个属性的话。这些类中的大多数属性都设置为其默认值。如果dp是实例属性,则需要为您创建的每个对象中的每个属性分配内存。由于dp是静态的,所以wpf可以更有效地管理每个属性的内存使用。 为您注册的任何DP提供默认值的原因是,无论您创建的包含该属性的对象有多少,当属性设置为默认值时,WPF都会注意不要为该属性分配额外的内存。 | 
|   |      3 
                                  5
                             我认为需要依赖属性的静态实例的原因实际上是因为它们是这样设计的。静态位包含所有的属性元数据——它的默认值、它的所有者类型(如果它是一个附加的属性的话就很方便)等,以及当它改变时的回调方法——诸如此类。将这些东西静态地存储在类的所有实例中而不是每个实例中是有意义的。 |