【问题标题】:XAML editor complains "Object does not match target type" for SharedResourceDictionary.SourceXAML 编辑器为 SharedResourceDictionary.Source 抱怨“对象与目标类型不匹配”
【发布时间】:2015-07-30 14:36:45
【问题描述】:

我们在项目中使用 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 ...}__">

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

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

更新:事实上,将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 设计编辑器的抱怨完全相同。如果我将utils:SharedResourceDictionary 替换为ResourceDictionary,它就可以工作。

Update3:SharedResourceDictionary 现在很简约,但 XAML 编辑器仍然报错。

【问题讨论】:

  • 您引用的任何样式的 TargetType 值是否与您尝试应用它们的 UIElement 不同?
  • 不,基本上,用原始资源字典替换共享字典(不更改 URL)使其工作。
  • 那我不确定。我之前使用过 SharedResourceDictionary 的实现,没有遇到任何问题。
  • @AlexAtNet 我猜你的SharedResourceDictionary 类在另一个程序集中。尝试将类添加到相同的命名空间。

标签: c# wpf xaml visual-studio-2015 resourcedictionary


【解决方案1】:

很可能是VS2015的问题;我自己的 XAML 编辑器有问题,我在 VS2013 中编写的 XAML 文件出现错误,并且经过测试和工作。尝试在 VS2013 中打开项目,它可能可以解决问题。对此没有任何承诺。

【讨论】:

【解决方案2】:

【讨论】:

  • 这个问题似乎没有已在更新 2 中修复。
猜你喜欢
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
相关资源
最近更新 更多