设置CurrentUICulture不会执行任何操作

时间:2019-06-03 12:54:00

标签: c# .net wpf currentculture

我正在尝试更改WPF应用程序中的数字格式。我想要国际标准化的格式(以空格分隔的千位分隔符),也要以“-”作为NaN符号。

我克隆了CultureInfo并设置了NumberFormatInfo,然后在主窗口的构造函数中将其设置为Thread.CurrentThread.CurrentCulture(我也在WindowLoaded中尝试过)。我还设置了CultureInfo.DefaultThreadCurrentCulture和* CurrentUICulture作为很好的度量。

但是没有任何效果。标签中的数字格式保留为默认的美国格式(逗号为千位分隔符)。为什么应用程序不响应我的设置文化?

这是完整的代码,尽管我尝试了许多变体,所以我怀疑实际的代码不是问题所在,但我误解了文化的工作方式:

        CultureInfo myNumberCulture = (CultureInfo)CultureInfo.InvariantCulture.Clone();
        myNumberCulture.NumberFormat = new NumberFormatInfo
        {
            NaNSymbol = "--",
            NumberGroupSeparator = " ",
            PercentGroupSeparator = " ",
            CurrencyGroupSeparator = " ",
            NumberDecimalSeparator = ".",
            PercentDecimalSeparator = ".",
            CurrencyDecimalSeparator = "."
        };
        Thread.CurrentThread.CurrentCulture = myNumberCulture;
        CultureInfo.DefaultThreadCurrentCulture = myNumberCulture;

1 个答案:

答案 0 :(得分:0)

问题的症结在于,当执行数字的内置格式设置时,Labels忽略了线程的区域性。但是,ToString没有。因此,我的解决方案/解决方法是在将ToString设置为标签的Content之前,显式调用ToString。