我的团队有一些使用XAML编写的WPF项目。我们最近向每个项目添加了大量本地特定的RESX文件。为了使事情整洁,我被要求将这些文件存储在[Project]> Localization> [locale]
现在,当我们在非美国语言环境中运行应用程序时,将从相应的RESX文件中提取字符串。我们试图更新RESX文件属性中的命名空间,并将它们设置为Public,以便创建结果设计器。 使工作正常的唯一方法是将语言环境RESX文件直接移到项目的Properties目录中。
反正有没有更新XAML以在子目录中搜索语言环境RESX文件的情况?
编辑 XAML Codebase and Solution Explorer
我已附上问题图片以进行澄清。
我们尝试过的一些代码更改:
1)我们尝试为xmlns:res =“ clr-namespace:[PROJECT] .CoreUI。 Localization ”
设置命名空间。
2)尝试将命名空间设置为xmlns:res =“ clr-namespace:[PROJECT]。 CoreUI ”
3)我们还试图更改RESX文件的自定义工具命名空间,以匹配当前的命名空间 My.Properties 和 CoreUI.Properties
我们还确认,例如,Resources.resx和Resources.ru.resx的访问修饰符均设置为Public,并且两个构建操作均显示“嵌入式资源”
答案 0 :(得分:0)
首先必须在名称空间中包含文件夹,并提及项目名称,例如:
xmlns:resx="clr-namespace:Prism_Modules.MyResources;assembly=Prism_Modules"
还必须包括:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
最后,您应该将资源中的值调用为:
<dxb:BarButtonItem x:Name="menuFile" Content="{x:Static resx:Resources.mnuFile}" }" />
答案 1 :(得分:0)
将.resx文件移动到另一个文件夹/项目时,公开资源成员的.Designer.cs文件仍将指向旧名称空间,Visual Studio还将其放置在.resx文件之外。
要解决此问题,我只删除了生成的.Designer.cs文件,然后在打开并保存.resx文件后,就使用适当的命名空间生成了Designer.cs文件,通常我甚至可以从其他项目中引用它。要为没有资源语言/文件的.Designer.cs文件生成文件,只需打开.resx文件并使用Access Modifier组合框,VS就会为您创建它。
希望我能帮上忙。