foreach (Binding b in Bindings) {\r
if (string.IsNullOrEmpty (b.DynMethodId))\r
continue;\r
- Type dataSourceType = b.Target.Instance.GetType ();\r
+ MemberReference mr = null;\r
+ if (b.Target == null)\r
+ mr = b.Source;\r
+ else\r
+ mr = b.Target;\r
+ Type dataSourceType = mr.Instance.GetType();\r
EventInfo evtInfo = dataSourceType.GetEvent ("ValueChanged");\r
FieldInfo evtFi = CompilerServices.GetEventHandlerField (dataSourceType, "ValueChanged");\r
- MulticastDelegate multicastDelegate = evtFi.GetValue (b.Target.Instance) as MulticastDelegate;\r
+ MulticastDelegate multicastDelegate = evtFi.GetValue (mr.Instance) as MulticastDelegate;\r
if (multicastDelegate != null) { \r
foreach (Delegate d in multicastDelegate.GetInvocationList()) { \r
if (d.Method.Name == b.DynMethodId)\r
- evtInfo.RemoveEventHandler (b.Target.Instance, d);\r
+ evtInfo.RemoveEventHandler (mr.Instance, d);\r
}\r
}\r
+ b.Reset ();\r
}\r
}\r
}\r