【问题标题】:Problem reference converter from an external assembly来自外部程序集的问题参考转换器
【发布时间】:2011-05-17 08:37:12
【问题描述】:

我正在创建一个资源字典,其中引用了我的所有转换器,因此无需引用每个单独的转换器。 我的转换器位于不同的程序集中,要导入它们,我执行以下操作:

  1. 添加对外部程序集的引用
  2. 创建资源字典
  3. 添加引用转换器程序集的 xml 命名空间
  4. 参考转换器

所以我的字典看起来像:

    <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 程序集的命名空间是正确的,因为在输入 &lt;Converter: 后所有转换器都会显示在建议列表中

编辑:在渲染控件预览时,VS 和混合设计器都能够找到该转换器。

编辑:我发现,这与合并字典无关。将转换器添加到 Window 的资源 时,也会出现同样的问题。

【问题讨论】:

  • BoolToBrushConverter 定义在哪里?
  • 在我引用的外部程序集中。 (转换器是公开的)
  • 命名空间为:Client.Utilities.Converters

标签: wpf resourcedictionary mergeddictionaries


【解决方案1】:

我终于找到了问题,它是.NET 4中引入的合并资源字典错误。

我通过在合并的资源字典中添加一个空样式来修复它(以前我有一个 RD,我在其中合并其他 RD,没有别的)。

here 是我最近发现的一篇博客文章,描述了同样的问题。

【讨论】:

    【解决方案2】:

    尝试使用

    <ResourceDictionary xmlns:Converters="clr-namespace:Client.Utilities.Converters;assembly=Client.Utilities">
    

    相反。
    更改:clr-namespace 而不是 namespace

    【讨论】:

    • 对不起,我的错误,我没有正确复制代码。它已经是一个 clr-namespace
    猜你喜欢
    • 2010-11-30
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多