Почему я могу получить доступ к DependencyProperties, которые не зарегистрированы в моем DependencyObject?

I ' Я надеюсь, что кто-нибудь сможет объяснить какое-то неожиданное поведение, с которым я столкнулся, продолжая свое исследование 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 без появления ошибки Framework.

Кто-нибудь еще находит такое странное поведение? Я бы ожидал исключение какой-то формы вроде «Вы не зарегистрировали это свойство с этим объектом» ... Matt

8
задан Matt__E_ 1 March 2011 в 01:00
поделиться