0

I'm binding the RadDatePicker to a viewModel dateTime property. when the property is null in database i get 01/01/0001. How to i change this behavior to just leave the date field blank.. example:

In database ===> experiation_date : NULL In View(GUI) ===> experation_date : 01/01/0001

Expected Result ===> experation_date : {Blank}

4

3 回答 3

1

并非总是可以将数据类型从 DateTime 更改为 DateTime?实际上可能需要 DateTime 对象。(一个典型的场景是当您的控件绑定到具有 DateTime 类型的数据库对象但您正忙于在控件中创建新记录,因此此时该值仍然为空。)在这种情况下,可以像 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 的 Resources 部分中,您将拥有:

<UserControl.Resources>
    <converters:EditDateConverter x:Name="NullableDate"/>
</UserControl.Resources>

然后,您可以简单地将以下行添加到控件上的绑定中:

Converter={StaticResource NullableDate}

如果您现在有一个空日期,控件将显示水印(例如“输入日期”)而不是 01/01/0001。

于 2014-03-14T08:05:09.353 回答
1

将 SelectedDate 设置为 null(而不是 DBNull):

RadDatePicker1.SelectedDate = null;

并在 xaml 中将 DateTimeWatermarkContent 设置为空字符串:

<telerik:RadDatePicker x:Name="RadDatePicker1" DateTimeWatermarkContent="" />
于 2012-04-18T10:07:08.330 回答
0

如果您绑定不可为​​空的日期时间变量,即 (DateTime) 来控制,那么它将使用默认的 01/01/001 日期而不是 Empty...。因此,如果您希望默认值为 Empty,那么只需更改变量的数据类型这势必控制到(DateTime?).....

日期时间 ===> 日期时间?

它工作正常...

谢谢。!!!

于 2012-04-24T15:57:59.830 回答