2011-04-13 7 views
2

私はSL4ユーザーコントロールを持っています。これにはDatePickerが含まれています。コントロールはDateTime依存関係プロパティを公開します(必須項目であるため、nullableではありません)。 {RelativeSource Self}のDateTimeプロパティに、DatePickerのSelectedDate(nullableである<DateTime>)を双方向でバインドしました。このバインディングは、DatePickerにnullの日付を入力する場合を除いて機能します。バインディングはValidatesOnExceptionsで設定されているため、DatePickerの境界線は赤色に変わりますが、ツールチップに「入力が正しい形式ではありません」と表示されます。しかし、そのフィールドは必須であると言わなければなりません。SilverLightに必要な日付ピッカーの確認

カスタムテキストで例外(ValidationException、FormatException、InvalidOperationExceptionなど)をスローしたカスタムIValueConverterを試しましたが、すべて処理されなくなりました。

私のコントロールがINotifyDataErrorInfoを実装できることは知っていますが、問題はnull値が自分のコントロールに入れられないことです。なぜなら、DateTimeはnullableではないからです。

私はバインディングなしでこのことを簡単に行うことができました。または、コントロールのNullable <DateTime>プロパティにバインドして、このプロパティがnullではないことを検証し、別のDateTimeプロパティを公開します。または、nullをDateTime.MinValueなどに変換するValueConverterを提供します。

しかし、これらの方法はすべて回避策のように思えますが、私はより良い解決策が好きです。これを処理する最善の方法は何ですか?

答えて

1

nullは有効な値ではありませんが、基本的には、DatePickerをnull可能なDateTimeにバインドしている値を作成する必要があります。

次に、検証ロジックに依存して、アプリケーションがnullの間に値を処理/保存されないようにするだけです。

関連する問題