德国文化和美国数字格式

时间:2015-04-16 19:55:23

标签: c# wpf

我需要在保持美国数字格式的同时将文化设置为德语。因此,我正在设置

var culture = new System.Globalization.CultureInfo("de-DE");
var usCulture = new System.Globalization.CultureInfo("en-US");
culture.NumberFormat = usCulture.NumberFormat;
CultureManager.UICulture = culture;

CultureManager来自Infralution,可以即时切换语言。我可以验证NumberFormat确实设置为美国格式,例如一个 ”。”作为上面代码后的十进制分隔符。不过,以下表达式

<TextBox Text="{Binding MyDoubleVariable, StringFormat={}{0:0.#}}"/>

其中MyDoubleVariable = 2.13显示为2,13。哪里是我的错? 如何保留美国格式?

2 个答案:

答案 0 :(得分:2)

WPF将在执行格式化时使用系统区域性。不知道你引用的框架。

尝试创建一个自定义IValueConverter,它将文化作为参数。

您可以为转换器创建格式字符串的字符串属性。

然后在您的xaml中,您可以为要使用的每个格式字符串创建一个转换器实例 - 例如,您可以有一个用于金钱而另一个用于数字。将转换器添加到绑定中,并在此时将文化说明符作为参数传递。

抱歉没有代码,在手机上接听。

答案 1 :(得分:0)

正如@kidshaw所说,WPF默认使用系统语言,但您可以覆盖它。

Setting Culture (en-IN) Globally in WPF App

How to set and change the culture in WPF

所以你应该在public static App() { ... }中做到这一点(至少我们通常会这样做)。

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)));

然后将语言更改为德语,您通常会这样做。这应该使用美国格式保留XAML中的格式化内容,但使用德语中的所有其他内容。

相关问题