XAML Resx本地化未按预期工作

3
我正在尝试使用resx文件来本地化我在XAML文件中使用的一些字符串。我查看了网上的其他文档,它们似乎都推荐一个两部分的过程:
1. 在你的窗口中添加clr-namespace,像这样:
xmlns:props="clr-namespace:PJConfiguration.Properties" 2. 使用该命名空间来本地化你的字符串,像这样:
Content="{x:Static props:Resources.SharedSettings}" 我已经完成了这个过程,并确保我的资源类是公共的,但我仍然从步骤2的XAML中获得以下错误:
无法找到类型“Resources”。
有人知道还有什么原因导致这个问题吗?谢谢。

1
没有足够的上下文,这种技术确实有效,你可能也可以在一个干净的项目中使其工作。但是在这种情况下,无法确定可能出了什么问题。 - H.B.
您有任何特别想让我包含的内容吗? - Case
一个 SSCCE 会很好。 - H.B.
1
你的 .resx 文件是应用程序集 Properties 目录下的默认 Resources.resx 文件吗? - atiyar
@Nero,你的评论让我再次检查资源文件。有人提交了一个旧版本的“resource.resx”而不是“resources.resx”。那个文件导致了问题。现在已经修复了,现在它可以正常工作了!谢谢!! - Case
@Nero,如果您添加答案,我会将其标记为正确。 :) - Case
3个回答

3
为了让资源在XAML中可见,您需要确保资源的代码生成模式设置为public。在VS中,您可以在资源设计器窗口顶部附近的ComboBox中找到该设置。
如果想要了解更多关于在XAML中使用.NET资源的信息,您可能需要参考以下博客文章:http://wpfglue.wordpress.com/category/localization/

谢谢,我已经按照我的问题陈述将代码生成模式设置为公共模式。我会查看博客,看看是否有其他有用的信息。 - Case
抱歉,之前忽略了public的部分。但是,在将访问修饰符更改为public后,您是否重新构建了项目?如果资源和使用它们的窗口在同一程序集中,则有时使用资源时出现的错误会阻止项目构建,而必须在找到资源之前进行构建。 - hbarck
是的,我已经重新构建了...甚至手动删除了整个 bin 目录。但没有任何改变。 - Case

2
检查你的.resx文件是否是位于应用程序程序集的Properties目录中的默认Resources.resx文件。如果是这样,XAML就可以从正确命名空间下的本地程序集找到公共类Resources,没有任何问题。

2
如果您的.resx不是默认的Resources.resx,那么没有办法做到这一点吗? - mclaassen

1

尝试按照此答案中的建议,在步骤2中指定程序集名称。


我刚刚添加了这个,但它并没有解决问题。我仍然收到“找不到类型'Resources'”的错误信息。 - Case

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接