8

我希望有人可以解释我在继续探索 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 是否有任何特殊用途的任何指导,因为我看不到允许这种行为的目的。

非常感谢,马特

4

1 回答 1

1

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

于 2011-03-01T11:32:51.770 回答