gpt4 book ai didi

c# - ownerType 不是 DependencyObject 的 DependencyProperty 有什么用?

转载 作者:太空狗 更新时间:2023-10-29 20:35:12 26 4
gpt4 key购买 nike

我刚开始在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com