使用场景:
- 弹出的窗体中使用了一个在ComboBox上扩展而来的ComboBoxTreeView控件
- 异常如下:
解决办法:
- 更改用户控件的构造函数为静态
异常原因及参考资料:
- 异常原因:
在依赖属性上重写元数据的操作必须在属性系统使用该属性之前进行,也就是说,在对注册属性的对象的特定实例进行实例化之前进行。 调用OverrideMetadata必须为自己提供的类型的静态构造函数中执行forType参数的OverrideMetadata。 所有者类型的实例存在之后尝试更改元数据不会引发异常,但会在属性系统中导致不一致的行为。 此外,每种类型只可以重写一次元数据。 以后在同一类型上重写元数据的尝试会引发异常。 - 参考资料:
https://docs.microsoft.com/zh-cn/dotnet/framework/wpf/advanced/how-to-override-metadata-for-a-dependency-property?redirectedfrom=MSDN#Y401