In WPF, there are two different approaches for dealing with data validation. On the one hand, we have the UI-based ValidationRule classes, the Validation.Error Attached Event, and the Binding.NotifyOnValidationError and UpdateSourceExceptionFilter properties, and on the other, we have two code-based validation interfaces.
While the ValidationRule classes and their related validation approach work perfectly well, they are specified in the XAML, and as such, are tied to the UI. Furthermore, when using the ValidationRule classes, we are effectively separating the validation logic from the data Models that they are validating and storing it in a completely different assembly.
When developing a WPF application using the MVVM methodology, we work with data, rather than UI elements and so, we tend to shy away from using the ValidationRule classes and their related validation strategy directly.
Additionally, the NotifyOnValidationError and UpdateSourceExceptionFilter...