C# 德国文化与美国数字格式

C# 德国文化与美国数字格式,c#,wpf,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; 来自Influtio

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

var culture = new System.Globalization.CultureInfo("de-DE");
var usCulture = new System.Globalization.CultureInfo("en-US");
culture.NumberFormat = usCulture.NumberFormat;
CultureManager.UICulture = culture;
来自Inflution,支持动态切换语言。我可以验证NumberFormat是否确实设置为US格式,例如在上述代码后使用“.”作为十进制分隔符。然而,下面的表达

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


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

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

尝试创建将区域性作为参数的自定义IValueConverter

对于转换器,可以为格式字符串创建字符串属性

然后在xaml中,您可以为要使用的每个格式字符串创建一个转换器实例——例如,您可以使用一个用于货币,另一个用于数字。将转换器添加到绑定中,然后将区域性说明符作为参数传递


对不起,没有电话号码,在手机上接听

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

因此,您可能应该在
公共静态应用程序(){…}
中执行此操作(至少我们通常是这样做的)


然后把你通常使用的语言改成德语。这应该使用US格式将格式化的内容保存在XAML中,但其他所有内容都使用德语。

我可以验证NumberFormat是否确实设置为US格式。请查看。我没有将其标记为重复,因为我有C#中的金色徽章,如果我这样做,会立即结束您的问题,我不完全确定链接的问题是否会解决您的问题。前后断点=>区域性从我们改为DE,数字格式保留我们。Martin,感谢您没有立即结束我的问题;o) 链接线程中的问题不是我所面临的问题。我在一台德国电脑上,可以成功地开始使用英语号码设置,但不能使用德语。我的问题发生在将语言切换为英语,然后再切换回德语时。@peter:链接问题的答案解释了如何修改数据绑定中使用的区域性格式。您肯定做得不对,因为设置
culturemage.UICulture
不会影响数据绑定中的格式设置。您好,谢谢,CustomConverter是一个好主意,它肯定会起作用。
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)));