Лапшекодим валидацию, или запрещаем вводить неправильные данные?
Вы, может, не понимаете, но с моей точки зрения, достаточно иметь просто набор нормальных контролов, которые делают все основные валидации для своего типа данных внутри себя. А вам нужно только привязать условия этих валидаций. Таскать данные для валидации между слоями - это ваш метод. Вы своими расширениями из вьюхи лезете в модель через вьюмодель, там на каждый чих дёргается рефлексия с кучей методов и селекторами по имени свойства и прочим параметрам. А потом предъявы к WPF, что это гриды с кучей значений тормозят.
А ещё заметили, что у него там не классический MVVM, а просто модель представления и вьюха. А где основная модель? А как правило именно у основной модели (т.е. модели из области бизнес логики) стоят эти атрибуты. И как он будет прокидывать атрибуты из модели во вью модель?