BindingList subscribes to PropertyChanged events of eligible contained objects. Iff the PropertyName provided is valid,
the list event's ListChangedEventArgs will also contain a PropertyDescriptor.
This is to match MS behavior.
void Item_PropertyChanged (object item, PropertyChangedEventArgs args)
{
- OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, base.IndexOf ((T) item)) );
+ var property_info = item.GetType ().GetProperty (args.PropertyName);
+
+ if (property_info != null) {
+ OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, base.IndexOf ((T) item),
+ new ReflectionPropertyDescriptor (property_info)) );
+ } else {
+ OnListChanged (new ListChangedEventArgs (ListChangedType.ItemChanged, base.IndexOf ((T) item)) );
+ }
}
protected virtual void OnAddingNew (AddingNewEventArgs e)