MVVM符合WPF应用程序中的本地化

如何使用MVVM模式本地化WPF应用程序? 我真的想以“正确”的方式做到这一点。

我目前的方法是使用.resx资源文件来本地化我的应用程序。

Solution Explorer VS 2012

我把它们包含在我的xaml代码中

xmlns:localization="clr-namespace:ClientLibTestTool.ViewLanguages" 

并像这样访问它们:

  

我的问题:

  1. 有没有更好的方法呢?
  2. 如何测试不同的语言(使用不同的语言设置加载应用程序)?
  3. 是否可以在运行时更改语言?

回答:

问题1:

问题2 :(谢谢,stijn)

 public MainWindow() { // Debug Settings localization.Culture = CultureInfo.GetCultureInfo("en-US"); // localization.Culture = CultureInfo.GetCultureInfo("de-DE"); this.InitializeComponent(); } 

问题3 :(谢谢你,stijn)

不是真的,有必要重绘完整的窗口。

就我而言,这是适当的方式。 要切换语言,请更改本地化类使用的文化:

 localization.Culture = CultureInfo.GetCultureInfo( "de-DE" ); 

由于所有字符串都是在运行时获取的(生成的Designer.cs文件中的所有调用看起来都像ResourceManager.GetString( "SomeString", resourceCulture );resourceCulture是上面调用设置的,这会影响您在运行时获得的内容。你可以在xaml中使用菜单项等中的值,你必须重建整个菜单才能生效。