2

なかなか頭に入らないものがあります。誰かが助けてくれることを願っています。

次のように、DateTime プロパティにバインドされた WPF TextBox があります。

<TextBox Text="{Binding DOB, StringFormat='{}{0:dd/MM/yyyy}'}" />

テキスト「01/30/2013」を入力すると、正しく変換され、「30/01/2013」として表示されます。「30/01/2013」というテキストを入力すると、入力が MM/dd/YYYY の形式であると想定されるため、検証エラーがスローされます。

入力形式を変更するにはどうすればよいですか? カスタムコンバーターを作成できることに気付きました。別の方法があるかどうか疑問に思っていましたか?

ありがとう

4

2 に答える 2

0

これをデバッグ モードで実行すると、次の変換エラーが発生します。

ConvertBack は、値 '30/01/2013' (タイプ 'String') を変換できません。BindingExpression: パス = 日付; DataItem='MainWindowViewModel' (HashCode=19342748); ターゲット要素は 'TextBox' (Name='') です。ターゲット プロパティは 'Text' (タイプ 'String') です FormatException:'System.FormatException: String は有効な DateTime として認識されませんでした。

の行に沿って何かを使用するデフォルトのコンバーターを使用しているようですDateTime.Parse

以下は同じ例外で失敗します。

var date = DateTime.Parse("30/01/2013");

唯一のオプションは、独自のコンバーターを作成することです。

于 2013-08-28T02:17:57.460 に答える