Какая польза от DependencyProperty, чей ownerType не является DependencyObject?

Я только начал играть с DependencyProperties в WPF и хотел проверить пару мыслей, пока не займусь ими.

Учитывая следующее (и на данный момент игнорируя соглашение об именах):

class MyTestClass
{
    public static readonly DependencyProperty dp1 = DependencyProperty.Register("MyProp", typeof(String), typeof(MyTestClass));

    public static readonly DependencyProperty dp2 = DependencyProperty.Register("MyProp2", typeof(String), typeof(MyTestClass), new PropertyMetadata("Hello"));
}

Я обнаружил, что dp2 выдает исключение TypeInitializationException с сообщением «Тип MyTestClass должен быть производным от DependencyObject», что я ожидал, но dp1 принимается вполне успешно.

Теперь, Я понимаю, почему dp2 вызывает исключение, поскольку я m пытается зарегистрировать метаданные свойств для типа, который не является DependencyObject, и это нормально. Я заглянул под обложки и увидел путь кода, которому следуют как dp1, так и dp2, поэтому я понимаю с точки зрения кода, почему dp1 не вызывает исключения, но концептуально я ожидал, что и dp1, и dp2 вызовут одно и то же исключение.

У меня вопрос, какой смысл в создании DependencyProperty, такого как dp1, чей ownerType не является DependencyObject, поскольку я не вижу, как его можно использовать без методов GetValue / SetValue в DependencyObject.

7
задан Raffael 25 February 2011 в 11:20
поделиться