2011-10-20 53 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; 
    
  • 給予管理員控制模塊也可以考慮

相關問題