Пока нашел тупое решение
1. Отказаться от Validator и перейти на INotifyDataErrorInfo
2. В View model Validate сделать принудительное обновление контролируемых свойств, что-то вроде
public bool Validate()
{
Name = Name;
if ( HasErrors) {
MessageBox.Show("Validation failed" );
return false;
}
return true;
}
Минус
— пока пропертя для сравнения надо руками прописывать (лень было автомат написать)
— почему-то хочется валидатор использовать.
Но в целом — работает.