这是我在升级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时工作得很好,并且从那时起就没有改变过。
关于改变的哪个部分打破了这个以及如何解决它的任何想法?
或者,有没有办法将Extended WPF Toolkit PropertyGrid的自定义编辑器与可空类型相关联而不使用这样的标记扩展名?