簡體   English   中英

根據文化在WPF中更改貨幣符號/日期時間格式

[英]Change Currency symbol/Datetime format in WPF based on Culture

我有一個需要基於系統語言設置的DateTime格式和基於用戶設置的Currency符號的格式的要求。 用戶設置來自用戶選擇國家的組合框。 因此,如果用戶選擇英國,則貨幣應以英鎊顯示,日期時間應以美國格式顯示。

例如:如果系統設置為US,用戶設置為UK,則DateTime格式必須為美國,貨幣符號為£。

我已經使用以下代碼根據系統區域設置更改了區域性信息:

            FrameworkElement.LanguageProperty.OverrideMetadata(typeof(FrameworkElement), 
            new FrameworkPropertyMetadata(System.Windows.Markup.XmlLanguage.GetLanguage(
                        System.Globalization.CultureInfo.CurrentCulture.IetfLanguageTag
                )
            )
        );

如何根據用戶設置格式化貨幣符號。 我在整個應用程序中都使用了文化格式化StringFormat=C2 ,它根據系統的語言環境設置顯示貨幣符號。

該應用程序是WPF。

組合框中包含的一些國家是:美國,德國,英國,加拿大

編輯:

我可以使用這樣的東西。 但是,有沒有辦法從我的視圖模型中綁定這些區域性信息?

   <StackPanel Margin="10">
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='en-UK'/>
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='en-US'/>
        <TextBlock Text="{Binding TotalPrice, StringFormat=C2, ConverterCulture='de-DE'/>
    </StackPanel>

你可能會得到所有相關CultureInfo使用CultureInfo.CurrentCulture

從文檔中:

Windows允許用戶使用“控制面板”中的“區域和語言選項”來覆蓋CultureInfo對象及其關聯對象的標准屬性值。 在以下情況下,CurrentCulture屬性返回的CultureInfo對象反映了這些用戶替代:[...]

獲取CultureInfo對象后,您可以使用其NumberFormat獲得貨幣符號,如下所示:

Console.WriteLine(currentCulture.NumberFormat.CurrencySymbol)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM