Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何本地化DatePicker';s日期格式基于区域设置中定义的语言_C#_Wpf_Datepicker - Fatal编程技术网

C# 如何本地化DatePicker';s日期格式基于区域设置中定义的语言

C# 如何本地化DatePicker';s日期格式基于区域设置中定义的语言,c#,wpf,datepicker,C#,Wpf,Datepicker,我的机器上安装了英语windows 7,默认语言为英语(使用“区域和语言设置”)。当我使用以下C#语句阅读DateTimeFormat.ShortDatePattern时: System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern 我得到了这个结果 "M/d/yyyy" 我也尝试了这个语句,但仍然得到了相同的字符串 System.Globalization.CultureInf

我的机器上安装了英语windows 7,默认语言为英语(使用“区域和语言设置”)。当我使用以下C#语句阅读
DateTimeFormat.ShortDatePattern
时:

System.Threading.Thread.CurrentThread.CurrentUICulture.DateTimeFormat.ShortDatePattern
我得到了这个结果

"M/d/yyyy"
我也尝试了这个语句,但仍然得到了相同的字符串

System.Globalization.CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern  
"M/d/yyyy"
然而,现在我改变了“地区和语言设置”的语言,选择了丹麦语。现在,如果我切换到Format选项卡,在short date Format下,它会显示本地化为丹麦语的
“M/d/åååå”
。这意味着,通过更改语言,日期时间格式也会更改

然而,在我的应用程序中,即使加载的CurrentUICulture是正确的,即da DK代表丹麦语,我仍然得到上面的英语格式字符串。我想显示本地化的ShortDateFormat,如区域设置中所示。我是否需要自己进行本地化,或者是否有任何构建方法来实现这一点。如果我遗漏了什么,请告诉我

编辑:添加此信息是为了根据与Peter的讨论进一步澄清问题


格式组合框显示丹麦语(丹麦)。格式读起来很好,即丹麦语,但字符串仍然显示M/d/yyyy,而不是M/d/åååå。这正是我希望在DatePicker控件中显示的字符串M/d/ååå。换句话说,水印应该显示本地化的ShortDatePattern。仍在挣扎…

尝试设置CurrentCulture,而不是CurrentUICulture。例如:

Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
CurrentUICulture指定应用程序所需的资源

CultureInfo指定日期、时间、数字、货币值、文本排序顺序、大小写约定和字符串比较的默认格式,这是您需要的格式。

下面是一个C#示例,说明您可以执行的操作。(Dump是一种linqpad扩展方法,您可以在自己的代码中忽略它)

日期格式字符串的完整列表可用

var languages=新列表{“de de”、“en”、“es-es”、“es-MX”、“fr-fr”、“it-it”、“pt-BR”、“sv-SE”};
var date=DateTime.Now;
语言。选择(l=>new{
朗=l,
d_shortDate=date.ToString(“d”,新文化信息(l)),
D_longDate=date.ToString(“D”,新文化信息(l)),
g_generalDate1=日期ToString(“g”,新文化信息(l)),
m=日期。ToString(“m”,新文化信息(l)),
y=date.ToString(“y”,新文化信息(l)),
dd=日期。ToString(“dd”,新文化信息(l)),
mm=日期ToString(“mm”,新文化信息(l)),
yy=日期ToString(“yy”,新文化信息(l)),
}).Dump();

谢谢您的回复,但在上述声明之后,您对以下声明的结果有何期待?Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern结果是“dd-MM-yyyy”,它仍然是一个英语字符串,而不是像这样的丹麦语“dd-MM-ååå”。
var languages =  new List<string>{"de-DE", "en", "es-ES", "es-MX", "fr-FR", "it-IT", "pt-BR", "sv-SE"};
    var date = DateTime.Now;
    languages.Select (l => new {
        Lang=l,

        d_shortDate =  date.ToString("d", new CultureInfo(l)),
        D_longDate =  date.ToString("D", new CultureInfo(l)),
        g_generalDate1 =  date.ToString("g", new CultureInfo(l)),
        m =  date.ToString("m", new CultureInfo(l)),
        y =  date.ToString("y", new CultureInfo(l)),
        dd = date.ToString("dd", new CultureInfo(l)),
        mm = date.ToString("mm", new CultureInfo(l)),
        yy = date.ToString("yy", new CultureInfo(l)),
    }) .Dump();