我刚刚开始在
WPF中使用DependencyProperties,我想要在掌握它们的同时检查几个想法.
给出以下(并忽略了现在的命名约定):
class MyTestClass { public static readonly DependencyProperty dp1 = DependencyProperty.Register("MyProp",typeof(String),typeof(MyTestClass)); public static readonly DependencyProperty dp2 = DependencyProperty.Register("MyProp2",typeof(MyTestClass),new PropertyMetadata("Hello")); }
我发现dp2抛出一个TypeInitializationException,消息“’MyTestClass’类型必须从DependencyObject派生”,这是我所期望的,但dp1很高兴被接受.
现在,我理解为什么dp2引发异常,因为我试图在不是DependencyObject的类型上注册属性元数据,这很好.我已经看了下,并且可以看到dp1和dp2都遵循的代码路径,所以我从代码的角度理解为什么dp1不会引发异常,但从概念上讲我会期望dp1和dp2都引发相同的异常.
我的问题是创建像dp1这样的DependencyProperty有什么用处,其ownerType不是DependencyObject,因为我看不到如何在没有DependencyObject的GetValue / SetValue方法的情况下使用它.