2011-10-27 81 views
1

我正在看到最奇怪的事情。在VS 2010调试器中运行我们的程序时,我可以切换使用我们其他文化的任何资源字符串,并且它们在UI中加载得很好。但是,当作为独立的WPF应用程序构建和运行时,文本框中只有数字(0.000 - > 0,000)正在改变。我们使用动态复位到另一种文化的代码是:未在WPF应用程序中加载本地化的字符串资源

private void ResetCulture(string culture) 
    { 
     // Reset the culture and reload the resources 
     var ci = new CultureInfo(culture); 
     Thread.CurrentThread.CurrentCulture = ci; 
     Thread.CurrentThread.CurrentUICulture = ci; 
     Messenger.Default.Send<CultureInfo>(ci); 
    } 

注:斜挎来自MVVM光工具包(我们使用WPF和Silverlight中的代码)。最后,我应该提到这个代码在Silverlight下工作得很好。

任何人都知道为什么WPF不通过加载新文化的资源字符串合作?

感谢, 丹

+0

资源从哪里来?如果取消选中Debug下的项目属性中的“启用Visual Studio托管进程”复选框,您是否在VS中运行时看到不同的行为?我问,因为这会导致行为上的差异。当选中时,VS会预载所有引用的程序集。当它没有被选中时,它更像是正常的运行时,只有被使用的程序集被加载。 – AndrewS

+0

资源是来自.resx文件的所有字符串资源,其中Forms.resx是父级和Forms。 .resx是所有孩子(以及Forms.Designer.cs文件)。我检查了我们的WPF项目的调试设置,并且“启用Visual Studio托管过程”选项已被取消选中。其他想法? – Lu10ntDan

+0

您在调试器中运行时提到。在没有附加调试器的情况下在VS中运行时,它会工作吗?即Ctrl + F5因此,VS正在为您生成资源程序集 - 即您的子文件夹像de-DE \ fooassembly.resources.dll。你是否分发这些文件并保持相同的文件夹结构? – AndrewS

回答

0

您需要重新启动应用程序。可以将新资源加载到内存中。

antonio

相关问题