У меня есть одна привязка, которая выглядит следующим образом:
<MyControl SomeProperty="{Binding VmProperty.SubProperty.SubSubProperty.Name, ValidatesOnDataErrors=True}" />
Каждый класс на пути реализует IDataErrorInfo, но в настоящее время , только мой последний класс имеет реальную проверку имени:
public string this[string propertyName]
{
get
{
if (propertyName == nameof(Name))
{
if(someCheck){
return "oh oh";
}
}
return string.Empty;
}
}
public string Error{
get{
return this[nameof(Name)];
}
}
Теперь я изменяю значение на что-то неправильное, что я получаю:
-
this[string propertyName]
в моей последней последней подмодели вызывается правильно и возвращает ошибку this[string propertyName]
на моей модели вида не вызывается (как и все остальные уровни) - Элемент управления не отображает красный квадрат вокруг него (он появляется, если я связываюсь напрямую с локальное свойство моей виртуальной машины.
Итак, насколько я понимаю, что:
IDataErrorInfo
ошибки не передаются до привязки - My
IDataErrorInfo
реализация модели представления не вызывается, потому что она не знает, что свойство sub-sub-sub-sub-sub было обновлено.
Как вы можете справиться с этим? Или способ быть информированным об изменении свойства sub-sub-sub-sub-sub (любой уровень может быть изменен, поэтому я регистрирую t o каждое PropertyChanged
событие каждого уровня было бы очень громоздким), либо всплывают ошибки?