设置 CurrentUICulture 什么都不做

Setting CurrentUICulture does nothing

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

我克隆了一个 CultureInfo 并设置了 NumberFormatInfo,然后在主 window 的构造函数中将其设置为 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;

问题的症结似乎在于 Labels 在对数字进行 built-in 格式化时忽略了线程的文化。但是 ToString 没有。所以我的 solution/workaround 是在将数字设置为标签的内容之前明确调用 ToString 到数字。