2011-03-01 91 views
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中的特殊用法,因为我看不到允许这种行为的目的。

非常感谢, 马特

+0

我猜'SomeClass'是为了'TestClass'(反之亦然)? – 2011-03-01 00:55:44

+0

EllipseGeometry.RadiusXProperty是附属属性吗? – 2011-03-01 00:57:23

+0

嗨史蒂文,你猜对了,我有一个复制和粘贴错误。我已将TestClass重命名为SomeClass。现在已经很晚了,我还能说什么呢。感谢您花时间回答 – 2011-03-01 01:01:54

回答

1

这种行为使您可以使用附加属性。没有这个,你怎么能在TextBox上使用Grid.Row。

相关问题