来自外部组件的问题参考转换器

发布于 2024-11-08 12:36:16 字数 1049 浏览 0 评论 0 原文

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

  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

有什么想法为什么会发生这种情况吗?

注意:从智能感知来看,转换器程序集的命名空间似乎是正确的,因为输入

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

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

I am creating a Resource Dictionary, where I reference all my converters, so there is no need to reference each individual converter.
My converters are in the different assembly, to import them I do the following:

  1. Add reference to external assembly
  2. Create a Resource Dictionary
  3. Add xml namespace referencing Converters assembly
  4. Reference converters

So my Dictionary looks like:

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

    <Converters:BoolToBrushConverter x:Key="boolToBrush"/>

</ResourceDictionary>

However I get the following exception when trying to build:

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

Any ideas why that is happening?

Note: From intellisense it seems that namespace for Converters assembly is correct, as all converters show up in the suggestion list after typing <Converter:

Edit: VS and blend designer both are able to find that converter, when rendering control preview.

Edit: I have figured out, that it is nothing to do with dictionaries being merged. The same issue appears, when adding a converter to Window's Resources.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

芯好空 2024-11-15 12:36:16

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

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

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

I have found the problem eventually, it is merged resourcedictionary bug introduce in .NET 4.

I have fixed it by adding an empty style into the merged resource dictionary (previously I had a RD where I was merging other RD and nothing else).

here is a blog post which I found recently which describes the same problem.

夜未央樱花落 2024-11-15 12:36:16

尝试使用

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

代替。
更改:clr-namespace 而不是 namespace

Try using

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

instead.
Change: clr-namespace instead of namespace.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文