Я хотел бы уведомить систему привязки в WPF об изменении элемента коллекции, чтобы проверка с помощью IDataErrorInfo была переоценена всякий раз, когда элемент внутри коллекции изменяется. У меня есть собственный тип списка, который реализует INotifyCollectionChanged (и работает правильно). Но почему-то логика проверки никогда не вызывается, потому что (или, по крайней мере, я предполагаю), что это уведомление не достигает нужного места. Возможно ли, что этот сценарий возможен? Что я пропустил?Уведомление об обновлении коллекции для проверки IDataErrorInfo
[Редактировать]
Поэтому в основном "архитектура" заключается в следующем:
- MVVM базовый класс реализует IDataErrorInfo и вы можете зарегистрировать DataValidators с лямбды в производных классах MVVM, таких как:
RegisterDataValidator(() => People,() => (People.Count == 0) ? "At least one person must be specified" : null);
Индексатор базового класса проверяет зарегистрированный валидатор и возвращает возвращаемое им значение.
- У меня есть
SmartBindingList<T> where T: INotifyPropertyChange
, которая в основном список, когда элементы добавляются к нему, регистрирует PropertyChangedEvent пункты, и реагирует на эти события, запуская событие CollectionChanged на самом классе:
private void OnSubPropertyChanged (object sender, PropertyChangedEventArgs e)
{
if (sender is T1)
{
if (CollectionChanged != null)
{
NotifyCollectionChangedEventArgs eventArgs = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Replace, sender, sender);
CollectionChanged(this, eventArgs);
}
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(myPropertyName));
}
}
}
Итак, все это работает хорошо, но когда код работает на линии CollectionChanged (this, eventArgs), ничего не происходит с точки зрения проверки. Он должен быть правильно подключен, потому что когда я добавляю что-то в коллекцию, он отлично работает. Что мне не хватает?
показать свой соответствующий код IDataErrorInfo –
У меня та же проблема – Mohsen