Аргументы события (GoChangedEventArgs) для события изменения имеют свойство IsBeforeChanging, которое указывает, было ли событие изменения вызвано методом «RaiseChanging» (true) или RaiseChanged (false). Это должно сказать вам, произошло ли изменение еще, но я не знаю способа отменить его.
Лучшее, что я могу предложить, - это вместо того, чтобы проверять, разрешено ли изменение, и выполнять его, проверять, разрешено ли изменение , не разрешено ли , и не вызывать ли метод "Отменить" для аргументов в событии изменения. Итак, по существу:
OnChanged(GoChangedEventArgs e)
{
if(NotAllowed)
{
e.Undo();
}
}