我正在按照这里的教程: http://www.wpftutorial.net/LocalizeMarkupExtension.html
所以我有一个继承自MarkupExtension的类(TranslateExtension)。这允许我向WPF添加这样的标记:
<TextBlock Text="{Mynamespace:Translate key1}" Margin="8" ></TextBlock>
并使用必要的文本填充文本块
但是当我想将前端放在另一个项目中时,我会得到以下例外情况:
我已经在我的XAML文件顶部添加了对命名空间的引用,并且命名空间存在于新项目中。我也从我的前端到我的旧项目有一个参考。
所以一切正常,直到我把前端提取到另一个项目......
重要提示:如果我将TranslateExtensions放在前端,与旧项目中的其他所有东西一起使用,那么事情就会神奇地起作用......
任何想法?
答案 0 :(得分:2)
以clr-namespace:
开头的XAML命名空间特定于程序集。如果未指定程序集名称,则假定当前程序集。
最简单的选择是使用程序集限定的命名空间:
xmlns:MyNamespace="clr-namespace:MyNamespace;assembly=MyAssembly"
对于更强大的解决方案,您可能需要查看XmlnsDefinitionAttribute
,它可用于将不同程序集中的多个CLR名称空间映射到单个XML名称空间URI。