想知道你是否可以帮助我。我有一个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。
这有什么简单的方法吗?如果我无法解决这个问题,我很想不进行内联添加,但我宁愿避免不得不沿着这条路走下去。
答案 0 :(得分:2)
设置数据对象类的DateTime
属性的默认值,即在T
的类ObservableCollection<T>
中设置或绑定ItemsSource
属性DataGrid
至:
private DateTime _dateTime = DateTime.Now; //<-- default value
public DateTime DateTime
{
get { return _dateTime; }
set { _dateTime = value; }
}