符合MVVM WPF应用程序中的定位(MVVM conform localization in WP

2019-08-17 09:23发布

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

我目前的做法是,我使用的.resx资源文件进行本地化我的申请。

我包括他们在我的XAML代码

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

并访问他们像这样:

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

我的问题:

  1. 有没有更好的办法做到这一点?
  2. 我如何可以测试不同的语言(使用不同的语言设置负载应用程序)?
  3. 是否有可能在运行时更改语言?

回答:

问题1:

问题2:(谢谢你,斯泰恩)

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

问题3:(谢谢你,斯泰恩)

不是真的,有必要重新绘制完成窗口。

Answer 1:

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

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

由于所有的字符串是在运行时获取(在生成Designer.cs文件中的所有通话的样子ResourceManager.GetString( "SomeString", resourceCulture );以及resourceCulture是什么得到由上面的呼叫建立,这会影响你在运行什么。然而。 supose您使用菜单项等值从XAML中,你必须重建整个菜单此生效之前。



文章来源: MVVM conform localization in WPF Applications