【发布时间】:2011-05-17 08:37:12
【问题描述】:
我正在创建一个资源字典,其中引用了我的所有转换器,因此无需引用每个单独的转换器。 我的转换器位于不同的程序集中,要导入它们,我执行以下操作:
- 添加对外部程序集的引用
- 创建资源字典
- 添加引用转换器程序集的 xml 命名空间
- 参考转换器
所以我的字典看起来像:
<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
你知道为什么会这样吗?
注意:从智能感知看来,Converters 程序集的命名空间是正确的,因为在输入 <Converter: 后所有转换器都会显示在建议列表中
编辑:在渲染控件预览时,VS 和混合设计器都能够找到该转换器。
编辑:我发现,这与合并字典无关。将转换器添加到 Window 的资源 时,也会出现同样的问题。
【问题讨论】:
-
BoolToBrushConverter定义在哪里? -
在我引用的外部程序集中。 (转换器是公开的)
-
命名空间为:Client.Utilities.Converters
标签: wpf resourcedictionary mergeddictionaries