微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在XAML中使用.resx资源的多语言WPF项目

如何解决在XAML中使用.resx资源的多语言WPF项目

我正在使用Resources.resx文件进行多语言WPF项目,我为英文创建了两个文件Resources.ar-LY.resx,对于阿拉伯语创建了SampleText文件,我同时添加一个名为Text具有不同的值。

在XAML窗口中,我将资源值分配给TextBlock的{​​{1}}属性,如下所示:

<TextBlock x:Name="txbSampleText" Text="{x:Static p:Resources.SampleText}"/>

然后..我使用以下行将应用程序文化更改为阿拉伯语:

Thread.CurrentThread.CurrentUICulture = new CultureInfo("ar-LY");

问题:项目文化发生了变化,但Textblock始终从Resources.resx获得价值,

我找到了THIS解决方案,但是该解决方案使用了背后的代码而不是XAML,您可以从HERE下载包含该问题的测试应用程序

请帮助

解决方法

您以正确的方式创建了Resources.lng.resx文件,这应该可以工作。 但是现在,让我们讨论为什么不这样做: InitializeComponent()方法有什么作用? 该方法绘制元素,设置其样式...,如果元素的文本绑定到资源,则通过键获取值并进行设置。 那么您的情况又如何呢? 窗口启动,所有文本均由InitializeComponent()方法设置,此后,完成“绘图”后,您将更改区域性,这是错误的。 如果希望从任何其他语言资源文件中获取文化,则应在调用InitializeComponent()之前设置UICulture。

这也意味着以这种方式您无法在程序运行时更改语言,并且如果要更改语言,则应将其保存在某个位置,重新启动程序,从节省的空间中加载保存的语言名称并进行设置。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。