RadDatePickerをviewModeldateTimeプロパティにバインドしています。データベースでプロパティがnullの場合、01/01/0001を取得します。この動作を変更して、日付フィールドを空白のままにする方法。例:
データベース内===>experiation_date:NULLビュー内(GUI)===> experation_date:01/01/0001
期待される結果===>experation_date:{空白}
RadDatePickerをviewModeldateTimeプロパティにバインドしています。データベースでプロパティがnullの場合、01/01/0001を取得します。この動作を変更して、日付フィールドを空白のままにする方法。例:
データベース内===>experiation_date:NULLビュー内(GUI)===> experation_date:01/01/0001
期待される結果===>experation_date:{空白}
SelectedDateをnullに設定します(DBNullではありません)。
RadDatePicker1.SelectedDate = null;
xamlで、DateTimeWatermarkContentを空の文字列に設定します。
<telerik:RadDatePicker x:Name="RadDatePicker1" DateTimeWatermarkContent="" />
データ型をDateTimeからDateTimeに変更できるとは限りませんか?実際には、DateTimeオブジェクトが必要になる場合があります。(一般的なシナリオは、コントロールがDateTime型のデータベースオブジェクトにバインドされているが、コントロールに新しいレコードを作成するのに忙しく、その時点で値がnullのままである場合です。)このような場合、次のことが可能です。次のリンクでPauloのように値コンバーターを記述します:http : //www.telerik.com/forums/default-date-value-01-01-001(EditDateConverterの彼のコードを参照してください。そのまま動作します。 ..)参照用に、またリンクが将来機能しなくなった場合に備えて、彼のコードをここに貼り付けています。
public class EditDateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null && value.GetType().FullName == "System.DateTime")
{
var dt2 = (DateTime)value;
if (dt2 != DateTime.MinValue)
return value;
}
DateTime dt;
if (!DateTime.TryParse(value as string, CultureInfo.InvariantCulture, DateTimeStyles.AssumeLocal, out dt))
return dt != DateTime.MinValue ? value : null;
return dt;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null && targetType.FullName == "System.DateTime")
return DateTime.MinValue;
return value;
}
}
RadDatePickerのバインディングで使用するには、コンバーターをXAMLのリソースとして追加してから、コンバーターをバインディングに追加します。
XAML名前空間宣言で、コンバーターの名前空間を追加する必要があります。次に例を示します。
xmlns:converters="clr-namespace:MyNamespace.Converters"
次に、XAMLの[リソース]セクションに次のように表示されます。
<UserControl.Resources>
<converters:EditDateConverter x:Name="NullableDate"/>
</UserControl.Resources>
次に、コントロールのバインディングに次の行を追加するだけです。
Converter={StaticResource NullableDate}
日付がnullの場合、コントロールは0001/01/01ではなく透かし(「日付の入力」など)を表示します。
null許容でない日時変数、つまり(DateTime)を制御にバインドする場合は、空ではなくデフォルトの01/01/001日付を使用します。したがって、デフォルト値を空にする場合は、変数のデータ型を変更するだけです。これは(DateTime?)....に制御するためにバインドされています。
DateTime ===> DateTime?
それはうまくいきます...
ありがとうございました。!!!