0

这是我在将扩展 WPF 工具包的版本从 1.9.0 升级到 2.0.0 后遇到的一个问题,原因不相关。尽管花了一些时间来抨击它,但我仍然不确定问题出在它,我的代码,还是当时没有人想到的问题。

以前,我有一个 PropertyGrid 样式,它使用 EditorDefinition 的 TargetType 属性为几种不同的数据类型设置基于类型的自定义编辑器。这显然在 2.0.0 下不起作用,因为 EditorDefinition 已过时,因此,根据给出的警告消息,我使用 EditorTemplateDefinition 和 TargetProperties 重写了样式,因此:

https://gist.github.com/cerebrate/6695088

这就是问题所在。如果我注释掉上面的两个 EditorTemplateDefinitions,那些使用 {arkane:Nullable} 标记扩展的,样式的其余部分(使用 {x:Type} 标记扩展的两个定义)有效。如果我将它们留在其中,一旦显示包含属性网格的窗口,应用程序就会崩溃并出现 XamlParseException,无法将 System.RuntimeType 转换为 IList。

{arkane:Nullable} 是 TypeExtension 的一个简单但非常标准的扩展——或者至少是常见的——扩展,以提供在 XAML 中使用可为空类型的能力:

https://gist.github.com/cerebrate/6695095

但更重要的是,它是 TypeExtension 的一个简单子类,并且在应用于 EditorDefinition 中的 TargetType 时工作得很好,并且从那以后就没有改变过。

关于更改的哪一部分打破了这一点以及如何解决它的任何想法,在任一端?

或者,是否有任何方法可以将扩展 WPF 工具包 PropertyGrid 的自定义编辑器与可为空的类型相关联,而无需使用此类标记扩展?

4

0 回答 0