0

我有以下问题。我的 WPF 解决方案包括两个只有两行的 resx 文件

Resources.resx -Name: IsManager Value: Yes | Name: IsNotManager Value: No
Resources.pl-PL.resx -Name: IsManager Value : Tak | Name: IsNotManager Value: Nie

我在 MainWindow 中也有简单的文本块

<TextBlock Text="{x:Static prop:Resources.IsManager}" />

问题是为什么当我将 CurrentUICulture 更改为 pl-PL 时,TextBlock 中的文本属性不会改变?我知道属性只初始化一次,我应该“刷新”这个属性的值,但是有没有自动执行此操作的选项?在我更改它的代码下面。

private void Button_Click_1(object sender, RoutedEventArgs e)
{
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("pl-PL");
}

我该怎么做才能更改此 Text 属性?

4

1 回答 1

2

如果绑定到静态值,它不会刷新,则必须打开窗口或重新创建视图或 UI,更准确地说,必须重新创建文本块才能再次评估 Text 属性。

解决方案是运行时本地化。你有几种选择。

  1. 使用动态资源和绑定: http: //www.codeproject.com/Articles/17334/Localizing-WPF-Applications-using-Locbaml

  2. 使用 ObjectdataProvider: http: //www.codeproject.com/Articles/22967/WPF-Runtime-Localization#AutomaticUpdatingWithODP

您可以通过搜索诸如http://altfo.wordpress.com/2009/02/18/wpf-localization-or-xaml-localization/之类的 WPF 运行时本地化来找到一些好的资源

于 2013-09-24T15:55:11.510 回答