我很清楚为什么依赖属性是静态的,问题仍然存在,这就是为什么我们需要在声明依赖属性时使用Readonly关键字。
答案 0 :(得分:3)
从概念上讲,依赖项属性是依赖项对象所具有的,并且不依赖于何时使用该属性。就像CLR属性一样,如果您要求此对象具有Total
属性,您知道它现在不能是double
,而是int
之后。const
。因此,如果可以的话,我们会创建依赖属性readonly
,但我们不能,因此readonly
是最好的选择。
使用{{1}}关键字至少有三种效果:
答案 1 :(得分:1)
因为它很明显,初始化后无法更改此属性的值。
答案 2 :(得分:1)
希望这会有所帮助:Silverlight.net forums: DependencyProperty - public static readonly?
引用:
“public static readonly”是从Register调用返回的字段。该字段是属性的标识符。您只需要标识符,以便Silverlight属性系统知道该怎么做,以便您可以在定义依赖项属性的CLR“包装器”时自己使用属性系统。一旦你有了包装器,所有进一步使用该属性就可以像典型的属性一样使用它。
公开,以便包括交叉汇编在内的所有属性系统调用都可以访问它。
静态和只读,因为这不是一个应该改变的定义;财产制度需要得到一致的结果。
在附加属性的情况下,您希望有一个“所有者”类。所有者类必须是调用RegisterAttached的类,并且还必须定义静态访问器方法(Get *和Set *),以便当您尝试在DependencyObject实例上设置附加属性时,XAML解析器知道该怎么做。所以它有点不同,因为对于附加属性通常没有“包装器”,任何代码访问只使用Get *和Set *访问器。