XAML设计器错误“对象与目标类型不匹配”为子类ResourceDictionary

时间:2019-02-10 13:43:46

标签: wpf xaml visual-studio-2017

我继承自class Role extends Model { public function admins() { return $this->hasMany('App\Admin'); } } ,以便添加一些自定义属性来支持外观。一切都能编译并正常运行,但是VS2017 XAML设计器显示错误消息“对象与目标类型不匹配”。下面的简单类足以重现该问题:

ResourceDictionary

一个有趣的线索是,它仅在引用custom属性时显示异常。第三项显示异常,但第二项不显示:

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

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

enter image description here

通常我不会将此视作另一个设计者错误,但是我的实际代码还实现了<ResourceDictionary Source="Styles/BorderStyling.xaml"/> <local:SubclassedResourceDictionary Source="Styles/BorderStyling.xaml"/> <local:SubclassedResourceDictionary ExtraInfo="foo" Source="Styles/BorderStyling.xaml"/> 接口,该接口引发异常,以警告开发人员有关自定义属性的无效组合。这些异常从未显示过,这至少告诉我目标类型的异常在代码运行之前发生。

我想知道用于存储资源的集合是否具有仅接受“真实” ISupportInitialize对象的代码。无论是在ResourceDictionary列表中还是在其他资源列表(例如MergedDictionary)中引用子类,我都遇到了这一问题。但是,它实际上又可以构建并运行,因此,如果这是问题所在,也许它特定于设计者验证?

该问题看上去与2015年的this问题类似,但被接受的答案仅是指出,该错误已得到修复(紧随其后的是评论未修复)。同样的错误?有解决方法吗?

我还找到了this的答案,听起来可能是相关的,但我一直无法弄清楚如何尝试。 VS2017似乎不提供对设计器文件的访问,只是在文件视图中(不是解决方案视图,在该视图中可以修改属性)。

0 个答案:

没有答案