11

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

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

解决方案资源管理器 VS 2012

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

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

并像这样访问它们:

        <Button x:Name="BtnGenerate" 
                Content="{x:Static localization:localization.ButtonGenerate}"/>

我的问题:

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

答案:

问题一:

问题2:(谢谢你,stijn)

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

问题3:(谢谢你,stijn)

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

4

1 回答 1

4

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

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

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

于 2013-03-07T10:58:34.143 回答