Author: calberto
Date: 2008-02-09 21:47:29 -0500 (Sat, 09 Feb 2008)
New Revision: 95354

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
Log:
2008-02-09  Carlos Alberto Cortez <[EMAIL PROTECTED]>

        * Binding.cs: Implement support for data source changes exposed by
        'PropertyNameChanged' events, and update the control property as
        needed.



Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs       
2008-02-10 02:16:24 UTC (rev 95353)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs       
2008-02-10 02:47:29 UTC (rev 95354)
@@ -94,6 +94,8 @@
                        //null_value = nullValue;
                        //format_string = formatString;
                        //format_info = formatInfo;
+
+                       ConnectPropertyChangedEvent ();
                }
 #else
                public Binding (string propertyName, object dataSource, string 
dataMember)
@@ -102,6 +104,7 @@
                        data_source = dataSource;
                        data_member = dataMember;
                        binding_member_info = new BindingMemberInfo 
(dataMember);
+                       ConnectPropertyChangedEvent ();
                }               
 #endif
                #endregion      // Public Constructors
@@ -396,6 +399,31 @@
                        PushData ();
                }
 
+               void ConnectPropertyChangedEvent ()
+               {
+                       string event_name = binding_member_info.BindingField + 
"Changed";
+                       Type event_handler_type = typeof (EventHandler);
+
+                       EventDescriptor prop_changed_event = null;
+                       foreach (EventDescriptor event_desc in 
TypeDescriptor.GetEvents (data_source)) {
+                               if (event_desc.Name == event_name && 
event_desc.EventType == event_handler_type) {
+                                       prop_changed_event = event_desc;
+                                       break;
+                               }
+                       }
+
+                       // No event for property changes
+                       if (prop_changed_event == null)
+                               return;
+
+                       prop_changed_event.AddEventHandler (data_source, new 
EventHandler (PropertyChangedHandler));
+               }
+
+               void PropertyChangedHandler (object o, EventArgs args)
+               {
+                       PushData ();
+               }
+
                private object ParseData (object data, Type data_type)
                {
                        ConvertEventArgs e = new ConvertEventArgs (data, 
data_type);

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2008-02-10 02:16:24 UTC (rev 95353)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2008-02-10 02:47:29 UTC (rev 95354)
@@ -1,3 +1,9 @@
+2008-02-09  Carlos Alberto Cortez <[EMAIL PROTECTED]>
+
+       * Binding.cs: Implement support for data source changes exposed by
+       'PropertyNameChanged' events, and update the control property as
+       needed.
+
 2008-02-08  Carlos Alberto Cortez <[EMAIL PROTECTED]>
 
        * Binding.cs: Implement 2.0 WriteValue method.

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to