我有以下问题。我的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属性?
答案 0 :(得分:2)
如果绑定到静态值,它将不会刷新,您必须打开窗口或重新创建视图或UI是什么,更精确的是必须重新创建文本块才能再次评估Text属性。
解决方案是运行时本地化。你有几种选择。
使用动态资源和绑定:http://www.codeproject.com/Articles/17334/Localizing-WPF-Applications-using-Locbaml
使用ObjectdataProvider:http://www.codeproject.com/Articles/22967/WPF-Runtime-Localization#AutomaticUpdatingWithODP
通过在http://altfo.wordpress.com/2009/02/18/wpf-localization-or-xaml-localization/
之类的WPF运行时本地化后搜索,您可以找到几个好的资源