Комбинация использования IDataErrorInfo и ValidationRules должна соответствовать всем вашим критериям.
1 & 2 - легко обрабатывается с использованием стандартных методов отображения валидации WPF. Для справочной информации я прочитал бы статью MSDN Джоша Смита , в частности, он показывает несколько способов обработки отображения информации проверки.
3 & 4 - легко обрабатывается через IDataErrorInfo . Этот интерфейс позволяет вам использовать любую логику, необходимую для отображения проверки, и может комбинировать несколько свойств в правилах проверки.
5 - Это просто отслеживание того, какие правила мешают сохранению, а какие нет. Вам нужно будет обработать это напрямую, но опять-таки, здесь может помочь IDataErrorInfo, поскольку вы можете использовать известный набор, который разрешает сохранение, и позволяет предотвратить любую другую проблему.
Для простых случаев, Правила валидации облегчают жизнь. Их можно комбинировать с IDataErrorInfo , однако, для хорошего сочетания простой и расширенной логики для сложных случаев.