2013-09-24 33 views
0

我遇到以下問題。我的WPF的解決方案包括與只有兩排當我更改CurrentUICulture文本屬性不會更改

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

2個RESX文件我也有簡單的文字塊在主窗口

<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屬性?

回答

2

如果您綁定到一個靜態值,它不會刷新,您必須打開窗口或重新創建視圖或什麼是您的用戶界面,更精確的文本塊必須重新創建,以便再次評估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

您可以通過WPF運行本地化後的搜索像http://altfo.wordpress.com/2009/02/18/wpf-localization-or-xaml-localization/

+0

感謝找到幾個好的資源很多鏈接,我使用ObjectDataProvider,它根據我的計劃工作:)再次感謝。 – Zabaa