From aeab5b59021f4a712d54357c8bbeaa6fac12dc37 Mon Sep 17 00:00:00 2001 From: Alexis Christoforides Date: Wed, 18 Jun 2014 22:11:43 -0400 Subject: [PATCH] [System.ComponentModel] BindingList.ListChanged now attempts to provide a PropertyDescriptor when possible. 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. --- mcs/class/System/System.ComponentModel/BindingList.cs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mcs/class/System/System.ComponentModel/BindingList.cs b/mcs/class/System/System.ComponentModel/BindingList.cs index b4c0ce8b69b..181b91dbbc9 100644 --- a/mcs/class/System/System.ComponentModel/BindingList.cs +++ b/mcs/class/System/System.ComponentModel/BindingList.cs @@ -248,7 +248,14 @@ namespace System.ComponentModel { 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) -- 2.25.1