8
我希望有人能解释我遇到的一些意想不到的行为,同时继续探索DependencyObjects和DependencyProperties。为什么我可以访问未在我的DependencyObject上注册的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中的特殊用法,因为我看不到允许这种行为的目的。
非常感谢, 马特
我猜'SomeClass'是为了'TestClass'(反之亦然)? – 2011-03-01 00:55:44
EllipseGeometry.RadiusXProperty是附属属性吗? – 2011-03-01 00:57:23
嗨史蒂文,你猜对了,我有一个复制和粘贴错误。我已将TestClass重命名为SomeClass。现在已经很晚了,我还能说什么呢。感谢您花时间回答 – 2011-03-01 01:01:54