2011-10-20 36 views
3

我使用一个datepicker在我的WPF的形​​式,和我具有当用户进入英国格式的日期,即31/12/1980,WPF似乎想的问题将其转换为美国,所以它读取12/31/1980。WPF的DatePicker默认到美式日期代替英国

这让我对我的SQL插入超出范围异常。

有没有人遇到此之前,如果是这样,你怎么解决?

回答

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

嗨克里斯。你的回答让我走上正轨。感谢那。但是,我发现必须在Window部分中明确定义语言,如下所示:** Language =“en-GB”**,否则由于某种原因,它将默认回到美国。奇怪,但它已经做到了。感谢您让我走上正确的道路。 Rich –

+0

根据文档,看起来像Window.Language是default =“en-US”。 http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k(SYSTEM.WINDOWS.FRAMEWORKELEMENT.LANGUAGE)%3bk(VS.XAMLEDITOR)%3bk(TargetFrameworkMoniker-%22.NETFRAMEWORK %2cVERSION%3dV4.0%22)&rd = true –

+0

@JamieClayton - 是的没错。 – ChrisF

0

实现这个(提示)方法的方法是:

  • 设置在一个配置文件
  • 商店不同(根据需要)格式的日期(也许WRT不同的国家和/或文化的文化底蕴)在一个标准的位置,如资源文件或配置(也可能在XML文件中);而在启动/主执行使用这些保存的设置
  • 示例代码: -

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

相关问题