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