我正在編寫一個WPF應用程序,並且在文化方面遇到了一些困難。默認文化在.NET應用程序中設置的位置
我想知道在沒有明確設置值時,.NET應用程序在哪裏爲CurrentThread.CurrentCulture獲取值。這不是來自Windows文化信息,因爲我已經將它從en-US更改爲en-GB,而不會在運行時注意到應用程序中的任何更改。
請幫忙!
馬克
我正在編寫一個WPF應用程序,並且在文化方面遇到了一些困難。默認文化在.NET應用程序中設置的位置
我想知道在沒有明確設置值時,.NET應用程序在哪裏爲CurrentThread.CurrentCulture獲取值。這不是來自Windows文化信息,因爲我已經將它從en-US更改爲en-GB,而不會在運行時注意到應用程序中的任何更改。
請幫忙!
馬克
見
CultureInfo.CurrentCulture
財產學習線程的默認文化是如何確定的,以及用戶如何設置他們的計算機文化信息。
如何線程的文化決定
當一個線程啓動時,它的文化被初步確定爲:
通過檢索文化,是由執行線程的應用程序域中的
DefaultThreadCurrentCulture
屬性指定,如果屬性va lue不是null
。通過調用Windows
GetUserDefaultLocaleName
函數。注意,如果你設置一個特定的文化,是從系統中安裝的文化或用戶首選的文化不同,應用程序啓動多個線程,這些線程的當前文化將被返回的文化通過
GetUserDefaultLocaleName
函數,除非您將文化分配給執行線程的應用程序域中的DefaultThreadCurrentCulture
屬性。有關如何確定線索文化的更多信息,請參閱
CultureInfo
主題中的「文化和線索」部分。
I didn't budget for another click, but clicked anyway。
文化和線程
當一個新的應用程序線程啓動時,它目前的文化和當前UI區域性是當前系統的文化定義,而不是由當前線程的文化。以下示例說明了這種差異。它將應用程序線程的當前文化和當前UI文化設置爲法國(法國)文化(fr-FR)。如果現在的文化已經是FR-FR,那麼這個例子將其設置爲英國(美國)文化(en-US)。它將三個隨機數字顯示爲貨幣值,然後創建一個新線程,而該線程又將三個隨機數字顯示爲貨幣值。但是,正如示例的輸出所示,與主應用程序線程的輸出不同,新線程顯示的貨幣值不反映法國(法國)文化的格式約定。
注意,它說當一個新的應用程序線程開始。因此,考慮到你說:
,因爲我已經改變,從EN-US爲en-GB不運行時,應用程序注意到任何改變這不是從Windows的文化信息。
你可能想檢討this answer。
謝謝,我沒有看到這我第一次瀏覽MSDN時的信息。 – serlingpa
@ user343159不要在我的諷刺中讀太多內容。我希望你的問題的答案在我所包含的其中一個鏈接中。 –
如果未指定特定文化或使用空字符串替代文化名稱,則使用InvariantCulture
。
它與英語有關,但與任何國家/地區無關。
採取這裏看看 http://stackoverflow.com/questions/2764615/wpf-stringformat-0c-showing-as-dollars 這應該解決您的問題,爲 –