我刚刚开始在 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(String), typeof(MyTestClass), new PropertyMetadata("Hello"));
}
我发现 dp2 抛出了一个 TypeInitializationException 消息“'MyTestClass' 类型必须从 DependencyObject 派生”,这是我所期望的,但 dp1 被非常高兴地接受了。
现在,我明白为什么 dp2 会引发异常,因为我试图在不是 DependencyObject 的类型上注册属性元数据,这很好。我查看了幕后,可以看到 dp1 和 dp2 都遵循的代码路径,所以我从代码的角度理解为什么 dp1 不会引发异常,但从概念上讲,我希望 dp1 和 dp2 都会引发相同的异常。
我的问题是在创建像 dp1 这样的 DependencyProperty 时有什么用,它的 ownerType 不是 DependencyObject,因为如果没有 DependencyObject 上的 GetValue/SetValue 方法,我看不到它如何使用。