【发布时间】: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