0

我正在关注这里的教程: //www.wpftutorial.net/LocalizeMarkupExtension.html

一切正常......直到我将我的代码分配给不同的项目

所以我有一个继承自 MarkupExtension 的类(TranslateExtension)。这允许我将这样的标记添加到 WPF:

<TextBlock Text="{Mynamespace:Translate key1}" Margin="8" ></TextBlock>

并且文本块被填充了必要的文本

但是当我想将前端放在不同的项目中时,我会遇到以下异常:

  • 名称空间中不存在名称“翻译”
  • 找不到“翻译”类型。确认您没有丢失程序集引用并且所有引用的程序集都已构建
  • XML 命名空间中不存在标签“翻译”......

我已经在我的 XAML 文件顶部添加了对命名空间的引用,并且命名空间存在于新项目中。我的前端也参考了我的旧项目。

所以一切正常,直到我将前端提取到另一个项目中......

重要提示:如果我使用 TranslateExtensions 并将其放在前端,以及旧项目中的所有其他内容,事情就会神奇地工作......

有任何想法吗?

4

1 回答 1

2

以 开头的 XAML 命名空间clr-namespace:特定于程序集。如果不指定程序集名称,则假定为当前程序集。

最简单的选择是使用程序集限定的命名空间:

xmlns:MyNamespace="clr-namespace:MyNamespace;assembly=MyAssembly"

对于更健壮的解决方案,您可能需要查看XmlnsDefinitionAttribute,它可用于将跨不同程序集的多个 CLR 命名空间映射到单个 XML 命名空间 URI。

于 2013-06-19T16:37:22.423 回答