Author: jackson
Date: 2005-03-03 05:19:14 -0500 (Thu, 03 Mar 2005)
New Revision: 41389

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
Log:
        * Binding.cs: Bind to <Property>Changed events so we can detect
        when properties are changed and update the data.



Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs       
2005-03-03 10:08:57 UTC (rev 41388)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/Binding.cs       
2005-03-03 10:19:14 UTC (rev 41389)
@@ -42,6 +42,10 @@
                private PropertyDescriptor prop_desc;
                private object data;
 
+               private EventDescriptor changed_event;
+               private EventHandler property_value_changed_handler;
+               private object event_current; // The manager.Current as far as 
the changed_event knows
+
                #region Public Constructors
                public Binding (string propertyName, object dataSource, string 
dataMember)
                {
@@ -105,9 +109,6 @@
                        if (Parse!=null)
                                Parse (this, cevent);
                }
-
-
-
                #endregion      // Protected Instance Methods
 
                
@@ -133,6 +134,8 @@
                        manager = control.BindingContext [data_source, 
property_name];
                        manager.AddBinding (this);
 
+                       WirePropertyValueChangedEvent ();
+
                        PullData ();
                        PushData ();
                }
@@ -153,6 +156,31 @@
                        PushData ();
                }
 
+               private void CurrentChangedHandler ()
+               {
+                       if (changed_event != null) {
+                               changed_event.RemoveEventHandler 
(event_current, property_value_changed_handler);
+                               WirePropertyValueChangedEvent ();
+                       }
+               }
+
+               private void WirePropertyValueChangedEvent ()
+               {
+                       EventDescriptor changed_event = 
TypeDescriptor.GetEvents (manager.Current).Find (property_name + "Changed", 
false);
+                       if (changed_event == null)
+                               return;
+                       property_value_changed_handler = new EventHandler 
(PropertyValueChanged);
+                       changed_event.AddEventHandler (manager.Current, 
property_value_changed_handler);
+
+                       event_current = manager.Current;
+               }
+
+               private void PropertyValueChanged (object sender, EventArgs e)
+               {
+                       PullData ();
+                       PushData ();
+               }
+
                #region Events
                public event ConvertEventHandler Format;
                public event ConvertEventHandler Parse;

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2005-03-03 10:08:57 UTC (rev 41388)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2005-03-03 10:19:14 UTC (rev 41389)
@@ -1,5 +1,11 @@
+2005-03-03  Jackson Harper  <[EMAIL PROTECTED]>
+
+       * Binding.cs: Bind to <Property>Changed events so we can detect
+       when properties are changed and update the data.
+
 2005-03-02  Jordi Mas i Hernandez <[EMAIL PROTECTED]>
-       * ImageList.cs
+
+       * ImageList.cs:
          - Changes 32-bit pixel format to Format32bppArgb to allow transparency
          - Fixes ImageList constructor with ImageList container
          - Fixes image scaling (wrong parameters at DrawImage)

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

Reply via email to