MVVM符合WPF应用程序中的本地化
如何使用MVVM模式本地化WPF应用程序? 我真的想以“正确”的方式做到这一点。
我目前的方法是使用.resx资源文件来本地化我的应用程序。
我把它们包含在我的xaml代码中
xmlns:localization="clr-namespace:ClientLibTestTool.ViewLanguages"
并像这样访问它们:
我的问题:
- 有没有更好的方法呢?
- 如何测试不同的语言(使用不同的语言设置加载应用程序)?
- 是否可以在运行时更改语言?
回答:
问题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中使用菜单项等中的值,你必须重建整个菜单才能生效。