2011-10-20 4 views
3

私はWPFフォームでDatePickerを使用していますが、ユーザーが英国の形式、つまり31/12/1980で日付を入力すると、それをアメリカ人に変換するために、1980年12月31日を読む。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

こんにちはクリスを考えることができ、管理者の制御モジュールを与える

System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("en-GB"); cultureInfo.DateTimeFormat.ShortDatePattern = ConfigurationManager.AppSettings["DateFormat_UK"]; System.Threading.Thread.CurrentThread.CurrentCulture = cultureInfo; 
  • 。あなたの答えは私を正しい軌道に乗せた。ありがとうございました。しかし、言語はWindowセクションで明示的に定義する必要があることを発見しました:** Language = "en-GB" **、何らかの理由でそれがAmericanにデフォルトされます。奇妙ですが、それはトリックを行っています。私を正しい道につけてくれてありがとう。 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および/または文化の中で

    • 設定し培養詳細)をリソースファイルやconfigのような標準的な場所に置くことができます(XMLファイル内にある場合もあります)。そして、起動/メインの実行に
    • サンプルコードをこれらの保存された設定を使用します - も

  • 関連する問題