В основном, если вы реализуете IDataErrorInfo
, проверка выполняется в связанном объекте, тогда как если вы реализуете правила проверки, проверка реализуется в объектах, прикрепленных к привязке.
Лично, если вы используете MVVM, я думаю, вы должны быть безумны, чтобы использовать что-либо, кроме IDataErrorInfo
. Вы хотите проверки, чтобы жить в модели представления. Если это в вашей модели представления, она централизована и может быть проверена. Если это по вашему мнению, то ваша логика проверки может быть неправильной или отсутствующей, и единственный способ найти ее - это вручную проверить ваше представление. Это огромный потенциальный источник ошибок, которых можно избежать.
Есть места, где имеет смысл использовать правила проверки - например, если вы строите пользовательский интерфейс вокруг тупых объектов (например, XmlDataSource
). Но для большинства производственных приложений я бы не стал подходить к этому.