XAML无法从Resx文件中读取值

时间:2012-11-29 07:47:44

标签: wpf

我有一个复合应用程序,它有一个Shell窗口并有一些模块,每个模块使用MEF(Microsfot Prism)加载到shell。 Shell本身有一个资源文件默认(Resource.resx)和其他语言(如Resource.ar-SA.resx)也支持Localilzation。

  • 对于Xaml:我使用过x:Static Resource.KeyName
  • 在c#代码中:我使用GetString(keyName, culture)来获取所需的字符串。

为了支持本地化,我添加了一行代码来获取系统的当前文化并加载所需的Resx文件。 设置当前文化。

Resource.Culture = 
    new System.Globalization.CultureInfo(System.Globalization.CultureInfo.CurrentCulture.Name); 

在App.Xaml.cs

所有这些工作完全没问题。

类似地,使用MEF加载的每个模块都具有如上所述的资源文件。但是在模块的情况下,Xaml中为特定语言文件定义的资源键不起作用。它始终从Default(Resource.Resx)文件中获取值。但是使用ResourceManager类在代码中使用的任何键都可以正常工作。

1 个答案:

答案 0 :(得分:0)

我最终将所有资源都保存在“基础架构”项目中,以便所有资源都从一个地方加载,只是简单了。

我的xaml绑定看起来像这样

获得resx课程的参考资料。

xmlns:resources="clr-namespace:Infrastructure.resources;assembly=Infrastructure"

现在获取文字

Content="{x:Static resources:Resources.Activity_Regarding}"

你可能已经这样做但我看不到。您可能希望确保命名空间与您要使用的resx匹配。所以你的模块命名空间。