我在我的WPF格式中使用了DatePicker,并且遇到的问题是,当用户输入英国格式的日期时,即31/12/1980,WPF似乎想将其转换为美国,所以它读取12 / 31/1980
这使我在SQL插入中超出范围异常。
之前有没有人遇到过这个问题,如果有的话,你是怎么解决这个问题的?
答案 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)
实施这种(暗示性)方法的方法是:
示例代码: -
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-GB");
cultureInfo.DateTimeFormat.ShortDatePattern = ConfigurationManager.AppSettings["DateFormat_UK"];
System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo;
也可以考虑提供管理员控制的模块