Проверка с использованием IDataErrorInfo
(если это то, что вы используете) произойдет на объекте, который связан с представлением.
так что если у вас есть
<TextBox Text="{Binding Name}" />
это будет на ViewModel. Однако если вы представите модель как свойство в модели представления, проверка будет выполняться в вашей модели данных.
<TextBox Text="{Binding Model.Name}" />
При первом выборе вы можете привязать свойства модели представления и направить его в модель данных, где она содержит фактическую проверку, затем просто внедрить IDataErrorInfo
в модель представления и направить проверку в модель
ViewModel:
public string this[string propname]
{
get { return _model[propname]; }
}
Это полезно только в том случае, если вы фактически задаете необходимые свойства модели для проверки работоспособности
ViewModel:
public string SomeProperty
{
get { reutrn _model.SomeProperty; }
set {
_model.OtherProperty = value;
RaisePropertyChanged("SomeProperty");
}
}
Однако я предпочитаю второй вариант связывания, потому что проблема в том, что он не очень СУХОЙ, поэтому я почти всегда буду представлять DataModel как свойство модели представления (так как оно отвечает за данные) и оставляю ViewModel, управляющий моделью для представления, которая больше о том, как пользовательский интерфейс взаимодействует с данными.
В очень сложных сценариях может быть лучше отделить валидацию от модели и модели представления и использовать ее как для модели представления, так и для модели данных.