Я понимаю, что это довольно старо, но я наткнулся на этот же вопрос сегодня. Я не уверен, почему это происходит, и я вполне уверен, что мои привязки были установлены правильно.
Я нашел обходной путь, по крайней мере, в моем случае. Я связал событие PreparingCellForEdit со своей моделью ViewModel. Этот метод просматривает столбец, чтобы определить, принадлежит ли ячейка редактирования к правильному столбцу указателей даты, и я также проверил, является ли дата, к которой она привязана, нулевой, что говорит мне, что это была новая строка. Затем я могу взять указатель даты и установить его DisplayDate из кода.
private void OnPreparingCellForEdit(DataGridPreparingCellForEditEventArgs e)
{
DataGridColumn sourceColumn = e.Column;
DataGridRow sourceRow = e.Row;
ScheduleDate data = (ScheduleDate) sourceRow.DataContext;
if (string.Equals(sourceColumn.Header.ToString(), "Work Date") && !data.WorkDate.HasValue)
{
var dp = e.EditingElement.GetVisualChild<DatePicker>() as DatePicker;
dp.DisplayDate = this.WorkDate;
}
}