2012-04-20 7 views
1

(この例外は、他の多くのスレッドで報告されており、はい、私はは私の問題の解決策を見つけようと、周りGoogleで検索している!!免責事項)を「文字列が有効な日時として認識されませんでした」私は、日付と時刻の変数にバインドWPF Toolkitの日付ピッカー制御で、WPFアプリケーションを持っている:私は、日付を入力するたびにDatePickerがDateTimeにバインドされています。</p> <p>:

<UserControl x:Class="MikesApp.View.UserControls.FXRatesUserControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:toolkit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"> 

<toolkit:DatePicker x:Name="fxDate" VerticalAlignment="Center" 
     Text="{Binding Selected_FXRate_Date, Mode=TwoWay}" 
     Style="{DynamicResource DatePickerStyle1}" > 
</toolkit:DatePicker> 

、など2012年4月20日、日付ピッカーコントロールは、それがだと考えているようです実際には英国の日付形式(dd/MM/yyyy)で、W PFtoolkitのソースコードで ""という文字列が有効なDateTimeとして認識されませんでした。

これは、WPFがこの日付がいつ変更されるかを知る必要がある、アプリケーションの他の部分への変更通知を実行する可能性を突然停止します。

Screenshot of VS2010 exception

私はバッフル付きです。

私のラップトップは、フォームMM/DD/YYYYで日付を表示するように設定されている、と私は、特に最初にこのコードを使用して、この米国の日付形式を使用するように私のアプリを言ってみた:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); 

Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "MMM-dd-yyyy"; 
Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern = "MMM-dd-yyyy hh:mm:ss"; 

その後、絶望のうち、このコードを使用して:私はDD/MMM/YYYYを使用して解析することはできません日付を選択するたび

CultureInfo ci = new CultureInfo("en-US"); 
ci.DateTimeFormat.SetAllDateTimePatterns(new string[] { "MM/dd/yyyy" }, 'd'); 
Thread.CurrentThread.CurrentCulture = ci; 
Thread.CurrentThread.CurrentUICulture = ci; 

しかし、関係なく、私がしようとするものの、日付ピッカーは、例外がスローされます。

私は例外をスローするコードの行(WPF ToolkitのSDKでDatePicker.csから取られた)を見てみると:

newSelectedDate = DateTime.Parse(text, DateTimeHelper.GetDateFormat(DateTimeHelper.GetCulture(this))); 

..I'veはその「DateTimeHelper.GetCulture(この発見) "は正しく" en-US "を返しますが、GetDateFormat関数が誤った日付形式を取得しています。何とかMMM/dd/yyyyではなくdd/MMM/yyyyを返しています。

GetDateFormat's return values

私は本当に困惑しています。

私も私のアプリに(WPFtoolkitのソースコードに次のパスから取られた)てgetDateFormat機能をcut'n'pasting試みたが、それは「間違った日付形式」問題を再現するために取得しようとしました。 ..しかし、それは私のコードでは、正常に実行され、MMM/dd/yyyyの日付を正しく解析するたびに。

WPFtoolkit \カレンダーWPFtoolkitコードは、それを使用して、私のWPFアプリケーションのコードに異なる文化を持っているでしょう、なぜ\マイクロソフト\ Windowsの\は\ DateTimeHelper.cs

を制御しますか?

正しいCultureを使用するにはどうすればWPFtoolkitを入手できますか?

+1

私のラップトップの地域設定は「英語(米国)」に設定されています。その前に必ず確認してください。 –

答えて

0

私はこれが直接的な答えではないことを知っていますが、それが役に立った場合に備えて、あなたはtelerikツールにアクセスできますか?、

<telerik:RadDateTimePicker x:Name="fxDate" VerticalAlignment="Center" 
    Culture ="{Binding Culture}" 
    Text="{Binding Selected_FXRate_Date, Mode=TwoWay}" 
    Style="{DynamicResource DatePickerStyle1}" > 
また

が、私はあなたが「もちろんそうではない」と言うでしょう、かなり確信しているが、念のために:そのRadDateTimePickerあなたが施行/設定することができます(タイプのCultureInfoの)文化依存関係プロパティを持っていますTemplateBindingをオフにする可能性のあるDatePickerStyle1のテンプレートをオーバーライドするなどの操作を行っていますか?

+0

返信いただきありがとうございます。いいえ、私のDatePicker宣言には、文化と何か変わるものはありません。覚えておいて、それは正しい文化(en-US)を取得しますが、この文化の間違った日付形式を取得します...それが私を困惑させるものです。私は誰もWPFtoolkitフレンドリーなソリューションを提案することができない場合、私はTelerikツールを調べるつもりはない、私はバックアップ計画を持っている! –

+0

うーん、ちょうどうんざりしている。私はあなたの質問を私の心の後ろにとどめます。ちょうどその日のうちに何かが見える場合に備えて、幸運を祈ります。 –

+0

唯一の別の方法は、私はバインディングでフォーマットを強制するコンバータを投げていると思うことができます... –

関連する問題