我希望有人可以解释我在继续探索 DependencyObjects 和 DependencyProperties 时遇到的一些意外行为。
给定以下简单的类:
class SomeClass : DependencyObject {
}
我可以愉快地编写如下代码:
public static void Test() {
SomeClass a = new SomeClass();
Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty));
a.SetValue(EllipseGeometry.RadiusXProperty, 3.24 );
Console.WriteLine(a.GetValue(EllipseGeometry.RadiusXProperty));
}
给出以下输出:
0
3.24
我的课程中没有任何内容与 EllipseGeometry 课程有任何关系,而且我没有将我的课程添加为 EllipseGeometry.RadiusXProperty 属性的所有者或使用 RegisterAttached() 那么为什么这样做呢?看来我可以很高兴地将任何 DP 添加到我的 DO 中,而框架不会引发错误。
有没有其他人发现这种奇怪的行为?我本来预计会出现某种形式的异常,例如“您尚未使用此对象注册此属性”...我将不胜感激有关以这种方式将 DP 添加到 DO 是否有任何特殊用途的任何指导,因为我看不到允许这种行为的目的。
非常感谢,马特