Binded DataGrid中的新行将DatePicker显示为01/01/0001

时间:2017-02-20 11:40:47

标签: c# wpf xaml datagrid datepicker

想知道你是否可以帮助我。我有一个DataGrid,用户将在DataGrid中添加新行。我有一个DatePicker绑定到ViewModel中的ObersableCollection集合。

当我通过双击最后一行创建一个新行时,DatePicker默认为01/01/0001。

我尝试过使用此处定义的转换器:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    DateTime dateValue = (DateTime)value;
    return dateValue.ToShortDateString() == "01/01/0001" ? DateTime.Now : value;
}

public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
    return value;
}

我将此转换器添加到绑定中。这会将UI显示为DateTime.Now,但是当它进入ObservableCollection时,DateTime值仍为01/01/0001。因此,当我将更改保存到数据库时,我收到一个错误,将DateTime2转换为DateTime。

这有什么简单的方法吗?如果我无法解决这个问题,我很想不进行内联添加,但我宁愿避免不得不沿着这条路走下去。

1 个答案:

答案 0 :(得分:2)

设置数据对象类的DateTime属性的默认值,即在T的类ObservableCollection<T>中设置或绑定ItemsSource属性DataGrid至:

private DateTime _dateTime = DateTime.Now; //<-- default value
public DateTime DateTime
{
    get { return _dateTime; }
    set { _dateTime = value; }
}