首页 > 解决方案 > 子类 ResourceDictionary 的 XAML 设计器错误“对象与目标类型不匹配”

问题描述

我继承自ResourceDictionary以添加一些自定义属性来支持蒙皮。一切都能正常编译和运行,但 VS2017 XAML 设计器显示错误消息“对象与目标类型不匹配”。以下简单的类足以重现该问题:

public class SubclassedResourceDictionary : ResourceDictionary
{
    public SubclassedResourceDictionary() : base()
    { }

    public string ExtraInfo { get; set; } = string.Empty;
}

一个有趣的线索是它只在引用自定义属性时显示异常。第三个条目显示了异常,但第二个没有:

<ResourceDictionary Source="Styles/BorderStyling.xaml"/>
<local:SubclassedResourceDictionary Source="Styles/BorderStyling.xaml"/>
<local:SubclassedResourceDictionary ExtraInfo="foo" Source="Styles/BorderStyling.xaml"/>

在此处输入图像描述

通常我会忽略它作为又一个设计错误,但我的真实代码也实现了ISupportInitialize抛出异常的接口,以警告开发人员自定义属性的无效组合。这些异常从未显示,这至少告诉我目标类型异常发生在我的代码运行之前。

我想知道用于存储资源的集合是否具有仅接受“真实”ResourceDictionary对象的代码。无论子类是在MergedDictionary列表中还是在其他资源列表(例如<Window.Resources>. 但是,同样,它实际上是构建和运行的,所以如果这是问题所在,也许它特定于设计者验证?

该问题似乎与2015 年的问题相似,但接受的答案仅表示这是一个将被修复的错误(随后有一条评论指出它未修复)。同样的错误?任何变通办法?

我还发现这个答案听起来可能是相关的,但我无法弄清楚如何尝试它。VS2017 似乎不提供对设计器文件的访问,除了文件视图(不是解决方案视图,可以修改属性)。

标签: wpfxamlvisual-studio-2017

解决方案


推荐阅读