2014-06-10 23 views
3

這是我的代碼。如何在wpf中更改應用程序文化?

double value = double.Parse(Utility.GetParamValueOrDefault(omRecord.paramList[i].value, "0"),CultureInfo.CurrentCulture); 

這是我得到的錯誤 出現FormatException: 輸入字符串的不正確的格式

我讀計算器的某些線程說我需要添加到主()的我的WPF應用程序下面的代碼。

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 
FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), new FrameworkPropertyMetadata(
XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag))); 

我仍然得到同樣的錯誤,我的CurrentCulture仍然不是en-US。

+0

* Thread.CurrentThread *僅適用於一個線程 - 您確定顯示的代碼在該線程中運行,而不是在另一個線程中運行? – stijn

+0

它在另一個線程中運行我如何爲整個應用程序設置它? – Gilad

+0

你把那個解析邏輯放在哪裏?在像BackgroundWorker這樣的新線程中?並且應該在應用程序開始時設置文化 –

回答

11

試試這個

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo("en-US"); 
CultureInfo.DefaultThreadCurrentUICulture = new CultureInfo("en-US"); 
+0

偉大的作品就像一個魅力 – Gilad

3

在你的應用程序的開始,你可以通過這種方式

Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-US"); 
      Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US"); 

設置的CultureInfo如果你想確定的CultureInfo在運行時嘗試這個辦法:

System.Globalization.CultureInfo currentCulture = Thread.CurrentThread.CurrentCulture; 

對於英語有這張表:-)

en   en-US  English 
en-029  en-029  English (Caribbean) 
en-AU  en-AU  English (Australia) 
en-BZ  en-BZ  English (Belize) 
en-CA  en-CA  English (Canada) 
en-GB  en-GB  English (United Kingdom) 
en-IE  en-IE  English (Ireland) 
en-JM  en-JM  English (Jamaica) 
en-NZ  en-NZ  English (New Zealand) 
en-PH  en-PH  English (Republic of the Philippines) 
en-TT  en-TT  English (Trinidad and Tobago) 
en-US  en-US  English (United States) 
en-ZA  en-ZA  English (South Africa) 
en-ZW  en-ZW  English (Zimbabwe) 
相關問題