当我更改CurrentUICulture时,文本属性不会更改

时间:2013-09-24 15:46:28

标签: c# wpf resx currentculture

我有以下问题。我的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中的text属性不会改变?我知道属性只初始化一次,我应该'刷新'这个属性的值,但有没有选择自动执行此操作?在我改变它的代码下面。

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

如何更改此Text属性?

1 个答案:

答案 0 :(得分: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

  3. 通过在http://altfo.wordpress.com/2009/02/18/wpf-localization-or-xaml-localization/

    之类的WPF运行时本地化后搜索,您可以找到几个好的资源