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

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

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

Большое спасибо, Matt

1 Ответ

1 голос
/ 01 марта 2011

Это поведение позволяет вам использовать вложенные свойства. Без этого, как вы можете использовать Grid.Row на TextBox, например.

...