Mat*_*_E_ 7 c# wpf dependency-properties dependencyobject
我刚刚开始在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"));
}
Run Code Online (Sandbox Code Playgroud)
我发现dp2抛出一个TypeInitializationException,消息"'MyTestClass'类型必须从DependencyObject派生",这是我所期望的,但dp1很高兴被接受.
现在,我理解为什么dp2引发异常,因为我试图在不是DependencyObject的类型上注册属性元数据,这很好.我已经看了下,并且可以看到dp1和dp2都遵循的代码路径,所以我从代码的角度理解为什么dp1不会引发异常,但从概念上讲我会期望dp1和dp2引发相同的异常.
我的问题是在创建像owner不是DependencyObject的dp1这样的DependencyProperty时会有什么用处,因为我看不到如何在没有DependencyObject的GetValue/SetValue方法的情况下使用它.
编辑
第一个注册签名的原因是注册一个DependencyProperty没有可以由Clear-method 恢复的默认值,并且也没有注册值更改回调的函数。
因为没有默认值,所以不会检查默认值是否有效,因此不会抛出异常。然而这样的注册是没有用的。你不会从它中得到任何好处,而且它不抛出异常这一事实并不意味着它对某些事情有好处——它只是没有错。
| 归档时间: |
|
| 查看次数: |
1806 次 |
| 最近记录: |