我正在创建一个资源字典,我引用了所有转换器,因此无需引用每个转换器。 我的转换器在不同的程序集中,要导入它们,我会执行以下操作:
所以我的词典看起来像:
<ResourceDictionary xmlns:Converters="clr-namespace:Client.Utilities.Converters;assembly=Client.Utilities">
<Converters:BoolToBrushConverter x:Key="boolToBrush"/>
</ResourceDictionary>
但是我在尝试构建时遇到以下异常:
Error 18 The tag 'BoolToBrushConverter' does not exist in XML namespace 'clr-namespace:Client.Utilities.Converters;assembly=.Client.Utilities'. Line 12 Position 6. C:\Resources.Tests\Resources\ResourceDictionaries\Converters\ConvertersResources.xaml 12 6 Client.eZenith.Resources.Tests
为什么会发生这种情况?
注意:从intellisense看,似乎转换器程序集的命名空间是正确的,因为在输入<Converter:
之后所有转换器都显示在建议列表中
编辑:VS和混合设计师都能够在渲染控件预览时找到转换器。
编辑:我已经发现,这与要合并的字典无关。将转换器添加到 Window的资源时会出现同样的问题。
答案 0 :(得分:1)
我最终发现了这个问题,它是在.NET 4中引入的合并resourcedictionary bug。
我已经通过在合并的资源字典中添加一个空样式来修复它(之前我有一个RD,我正在合并其他RD而没有别的)。
here是我最近发现的一篇博文,其中描述了同样的问题。
答案 1 :(得分:0)
尝试使用
<ResourceDictionary xmlns:Converters="clr-namespace:Client.Utilities.Converters;assembly=Client.Utilities">
代替。
更改:clr-namespace
而不是namespace
。