私はDatePickerを持っており、ユーザーが00/00/0000を入力できるようにしたいと考えています。私が00/00/0000を入力した場合、それを受け入れず、DatePickerテキストをヌル/空白に戻します。WPF DatePickerで0/0/0を有効な日付として受け入れる方法はありますか?
DatePickerには、バインドされた値がMM/dd/yyyy形式に変換され、ユーザー入力中にNULL以外の値とConvertsBackがMMddyyyyに変換されるコンバーターも接続されています。
00/00/0000はDateTimeの有効な値ではありませんが、01/01/0001を00/00/0000として表示する方法はありますか?
基本的には、クライアントのニーズに応じて、値は入力されず、値は入力されず、00000000はデータ入力時に値が不明である必要があります。私はそれが理にかなっていないことを知っていますが、私は開発者の仕事の一部である時に、非現実的な要件を満たすために推測します。テキストボックスは簡単なオプションですが、可能であればDatePickerで可能です。
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
If Not ComponentModel.DesignerProperties.GetIsInDesignMode(New DependencyObject) Then
If value IsNot Nothing Then
Dim str As String = value.ToString
Try
Dim dt As Date = DateTime.ParseExact(str, "MMddyyyy", New CultureInfo("en-US"), Nothing)
Return dt.ToString("MM/dd/yyyy")
Catch ex As Exception
If str.Trim = "" Then
Return Nothing
Else
Return str
End If
End Try
Else
Return Nothing
End If
End If
Return value.ToString
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
Return System.Convert.ToDateTime(value).ToString("MMddyyyy")
End Function
何とかDatePickerが00/00/0000を受け入れるように管理しているとしましょう。さて、大きな疑問は、実際には00/00/00とは何日ですか?うーん、デートではないですね...? (グレゴリオ暦に関して) – elgonzo
DatePickerのSelectedDate値は、DateTime値またはnullにしか設定できません。 00/00/0000はどちらでもありません。 – mm8
注:グレゴリオ暦では、ADの最初の年は1年目(= 1AD)です。 1ADに先行する年は、ゼロ年ではありません。それは1BCです。 – elgonzo