Вы можете делать то, что вы хотите в вашем собственном правиле валидации.
Если вы посмотрите на:
https://msdn.microsoft.com/en-us/library/system.windows.controls.validationrule%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
else
{
// show a message box or something
return new ValidationResult(true, null);
}
Вы вполне можете обнаружить, что есть некоторые нежелательные побочные эффекты, если вы делаете что-то блокирующее, и, возможно, вы не просто хотите показать сообщение.
Когда validationrule решает, что значение не выполнено, оно останавливает передачу значения в источник (свойство в модели представления).
Следовательно, вы можете запустить некоторую обработку из установщика связанного свойства в вашей модели представления.
В качестве альтернативы вы можете обработать sourceupdated и установить notifysourceupdated в вашей привязке. Сделайте что-нибудь с этим как общий подход.