加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 其ownerType不是DependencyObject的DependencyProperty有

发布时间:2020-12-15 07:58:53 所属栏目:百科 来源:网络整理
导读:我刚刚开始在 WPF中使用DependencyProperties,我想要在掌握它们的同时检查几个想法. 给出以下(并忽略了现在的命名约定): class MyTestClass{ public static readonly DependencyProperty dp1 = DependencyProperty.Register("MyProp",typeof(String),typeof
我刚刚开始在 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方法的情况下使用它.

解决方法

编辑
第一个Register-Signature的原因是注册一个DependencyProperty,它没有可以通过Clear-method恢复的默认值,也没有注册的值更改回调.

因为没有默认值,所以不会检查默认值是否有效,因此不会抛出您的异常.但是没有使用这样的注册.你将没有任何好处,并且它不会抛出异常并不意味着它对某些东西有益 – 它只是没有错.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读