XAML编辑器抱怨“对象与目标类型不匹配”;SharedResourceDictionary.Source

本文关键字:不匹配 类型 Source SharedResourceDictionary 目标 编辑器 对象 XAML | 更新日期: 2023-09-27 18:05:29

我们在项目中使用了SharedResourceDictionary。该词典是由SO上的几篇文章构建而成的。但我把它简化为:

public class SharedResourceDictionary : ResourceDictionary
{
    public new Uri Source
    {
        get { return base.Source; }
        set { base.Source = value; }
    }
}

在新的VS2015中设计的XAML不能加载样式和抱怨

1. The resource "..." could not be resolved.
2. Object does not match target type.
3. The resource "..." could not be resolved.
4. The resource "..." could not be resolved.
5. The resource "..." could not be resolved.

在以下标记(下划线文本是它抱怨的地方):

<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             Style="_1_{StaticResource ...}__"
             ...
             >
    <UserControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <utils:SharedResourceDictionary _2_Source="pack://application:,,,/.../Styles.xaml"__ />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </UserControl.Resources>
    <StackPanel Style="_3_{StaticResource ...}__">

资源和控件在不同的程序集中。

你是否有过同样的经历或知道解决方案?

Update:实际上,将utils:SharedResourceDictionary替换为ResourceDictionary可以使其正常工作。

Update2:这个问题不是因为Styles.xaml -我已经创建了几乎空的资源文件:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <SolidColorBrush x:Key="Test" Color="#FFFFFF" />
</ResourceDictionary>

和Visual Studio Design编辑器只是抱怨完全相同。如果我用ResourceDictionary代替utils:SharedResourceDictionary,它就会起作用。

Update3: SharedResourceDictionary现在是极简主义的,但XAML编辑器仍然抱怨

XAML编辑器抱怨“对象与目标类型不匹配”;SharedResourceDictionary.Source

这很可能是VS2015的一个问题;我自己的XAML编辑器有问题,给我在VS2013中编写的XAML文件提供错误,并进行了测试和工作。尝试在VS2013中打开项目,它可能解决问题。这个没有承诺。

我被告知Dudu提交的bug(谢谢!)

https://connect.microsoft.com/VisualStudio/feedback/details/1820572/xaml-designer-gives-error-object-does-not-match-target-type-for-derived-resourcedictionary-property

应该在更新时固定:https://msdn.microsoft.com/en - us/library/61f460b4 d173 - 45 - b8 - 8347 - 003 - e863ef074