我希望有人能够解释一些我在探索 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中?因为我无法看到允许这种行为的目的。
非常感谢, Matt
SomeClass
应该是指TestClass
(或者反过来)? - Steven Jeuris