我希望有人能解释我遇到的一些意外行为,同时继续探索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

我的类(class)中没有任何东西与EllipseGeometry类有任何关系,并且我没有将我的类(class)添加为EllipseGeometry.RadiusXProperty属性的所有者或使用RegisterAttached(),所以为什么这样做有效?看来我可以很高兴地在我的DO中添加任何DP,而不会引起框架错误。

还有其他人会发现这种奇怪的行为吗?我本来希望在“您尚未向该对象注册此属性”这一行中出现某种形式的异常...我希望能对以这种方式将DP添加到DO中是否有任何特殊用途提供任何指导无法看到允许这种行为的目的。

非常感谢,
马特

最佳答案

此行为使您可以使用附加属性。没有这个,如何在TextBox上使用Grid.Row。

关于c# - 为什么我可以访问未在DependencyObject上注册的DependencyProperty?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5149299/

10-11 15:16