там нужно проверять при наступлении

Код:
if (event.reason == DataGridEventReason.OTHER || event.reason == DataGridEventReason.CANCELLED)
{
return;
}
Насколько я разобрался, ситуация там следующая. Событие наступает тогда, когда ячейка теряет фокус по следующим причинам (DataGridEventReason):
CANCELLED - редактирование отменено (нажат Esc)
NEW_COLUMN - по окончанию редактирования фокус ушел на соседнюю колонку этого ряда.
NEW_ROW - фокус ушел на новый ряд этой колонки.
OTHER - То есть просто потерян фокус, произошло скроллирование или был переход в состояние, в котором редактирование не допущено.
Значит, что за одно редактирование у нас событие может случиться 2 раза: при NEW_COLUMN или NEW_ROW и OTHER.