- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我刚开始在 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' type must derive from DependencyObject”,这是我所期望的,但 dp1 被很高兴地接受了。
现在,我明白了为什么 dp2 在我尝试在不是 DependencyObject 的类型上注册属性元数据时引发异常,这很好。我查看了幕后情况,可以看到 dp1 和 dp2 都遵循的代码路径,所以我从代码的角度理解为什么 dp1 不引发异常,但从概念上讲,我希望 dp1 和 dp2 引发相同的异常。
我的问题是创建像 dp1 这样的 DependencyProperty 有什么用,它的 ownerType 不是 DependencyObject,因为我看不出在没有 DependencyObject 上的 GetValue/SetValue 方法的情况下如何使用它。
最佳答案
编辑
第一个 Register-Signature 的原因是要注册一个 DependencyProperty
,它没有可以通过 Clear
方法恢复的默认值,也没有注册值更改回调.
因为没有默认值,所以不会检查默认值是否有效,因此不会抛出您的异常。但是这样的注册是没有用的。您将不会从中受益,并且它不会抛出异常这一事实并不意味着它对某些事情有好处 - 它只是没有错。
关于c# - ownerType 不是 DependencyObject 的 DependencyProperty 有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115750/
我刚开始在 WPF 中使用 DependencyProperties,我想在掌握它们的同时检查一些想法。 鉴于以下内容(现在忽略命名约定): class MyTestClass { publi
我是一名优秀的程序员,十分优秀!