WPF DatePicker默认为美国风格日期而非英国

时间:2011-10-20 10:49:35

标签: .net user-interface c#-4.0 wpf-controls

我在我的WPF格式中使用了DatePicker,并且遇到的问题是,当用户输入英国格式的日期时,即31/12/1980,WPF似乎想将其转换为美国,所以它读取12 / 31/1980

这使我在SQL插入中超出范围异常。

之前有没有人遇到过这个问题,如果有的话,你是怎么解决这个问题的?

2 个答案:

答案 0 :(得分:7)

您需要确保UI具有正确的区域设置。

我不确定WPF,但我知道在Silverlight中存在一个错误,即XAML不遵守Windows的语言环境。您必须将以下代码包含在视图的构造函数中:

// Get "StringFormat=c" to honour culture settings.
// From http://timheuer.com/blog/archive/2010/08/11/stringformat-and-currentculture-in-silverlight.aspx
this.Language = XmlLanguage.GetLanguage(Thread.CurrentThread.CurrentCulture.Name);

现在,如果您的计算机未设置为en-GB但您的应用程序需要此功能,则需要通过设置应用程序线程的CurrentCulture或传入“en-GB来强制使用该语言”

答案 1 :(得分:0)

实施这种(暗示性)方法的方法是:

  • 在配置文件中设置文化详细信息
  • 在资源文件或配置等标准位置(可能也在XML文件中)存储日期(可能是w.r.t不同的国家/地区和/或文化)的不同(根据需要)格式;并在启动/主执行中使用这些保存的设置
  • 示例代码: -

    System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-GB");
    
    cultureInfo.DateTimeFormat.ShortDatePattern = ConfigurationManager.AppSettings["DateFormat_UK"];
    
    System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
    
  • 也可以考虑提供管理员控制的模块

相关问题