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