Stackoverflow exception in csla.dll

Stackoverflow exception in csla.dll

Old forum URL: forums.lhotka.net/forums/t/10616.aspx


decius posted on Tuesday, August 16, 2011

I'm experiencing a stack overflow exception coming from inside csla.dll. Under certain conditions, when setting any property on an object in a BusinessListBase causes an infinite recursive call to OnChildChanged. I think it might have something to do with my Child object property here, but I'm really confused and can't seem to figure this out. Below is the snapshotted stacktrace after several of the infinite calls, followed by object source:

   at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo)
   at System.Environment.get_StackTrace()
   at Csla.Core.ChildChangedEventArgs..ctor(Object childObject, PropertyChangedEventArgs propertyArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ChildChangedEventArgs.cs:line 77
   at Csla.Core.ChildChangedEventArgs..ctor(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ChildChangedEventArgs.cs:line 93
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 433
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at Csla.Core.ObservableBindingList`1.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 424
   at Csla.Core.ObservableBindingList`1.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs, NotifyCollectionChangedEventArgs listArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 434
   at Csla.Core.ObservableBindingList`1.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 457
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2869
   at Csla.Core.BusinessBase.Child_Changed(Object sender, ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2944
   at System.EventHandler`1.Invoke(Object sender, TEventArgs e)
   at Csla.Core.BusinessBase.OnChildChanged(ChildChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2861
   at Csla.Core.BusinessBase.RaiseChildChanged(Object childObject, PropertyChangedEventArgs propertyArgs) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2879
   at Csla.Core.BusinessBase.Child_PropertyChanged(Object sender, PropertyChangedEventArgs e) in C:\csla\Csla4.1.0\Source\Csla\Core\BusinessBase.cs:line 2911
   at System.Collections.ObjectModel.ObservableCollection`1.OnPropertyChanged(PropertyChangedEventArgs e)
   at System.Collections.ObjectModel.ObservableCollection`1.InsertItem(Int32 index, T item)
   at Csla.Core.ObservableBindingList`1.InsertItem(Int32 index, T item) in C:\csla\Csla4.1.0\Source\Csla\Core\ObservableBindingList.cs:line 294
   at Csla.BusinessListBase`2.InsertItem(Int32 index, C item) in C:\csla\Csla4.1.0\Source\Csla\BusinessListBase.cs:line 323
   at System.Collections.ObjectModel.Collection`1.Add(T item)
   at Aps.SaasHr.Library.M3Migration.CcLeafs.NewLeaf(String name, CcLeaf parent) in C:\Documents and Settings\markb\My Documents\Visual Studio 2010\Projects\Aps.SaasHr\Aps.Saas.Library\M3Migration\CcLeafs.cs:line 16
   at Aps.SaasHr.M3Migration.Wpf.ViewModel.MigrantVm.DoCcDrop(CcLeaf dropTo, Object dropped) in C:\Documents and Settings\markb\My Documents\Visual Studio 2010\Projects\Aps.SaasHr\Aps.SaasHr.M3Migration.Wpf\ViewModel\MigrantVm.cs:line 196
   at Aps.SaasHr.M3Migration.Wpf.ViewModel.MigrantVm.<.cctor>b__41(Object[] x) in C:\Documents and Settings\markb\My Documents\Visual Studio 2010\Projects\Aps.SaasHr\Aps.SaasHr.M3Migration.Wpf\ViewModel\MigrantVm.cs:line 156
   at GalaSoft.MvvmLight.Command.RelayCommand`1.Execute(Object parameter)
   at Aps.SaasHr.M3Migration.Wpf.ViewModel.MigrantVm.<>c__DisplayClass4.<SetCcDrop>b__3(Object sender, DragEventArgs args) in C:\Documents and Settings\markb\My Documents\Visual Studio 2010\Projects\Aps.SaasHr\Aps.SaasHr.M3Migration.Wpf\ViewModel\MigrantVm.cs:line 136
   at System.Windows.DragEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   at System.Windows.OleDropTarget.RaiseDragEvent(RoutedEvent dragEvent, Int32 dragDropKeyStates, Int32& effects, DependencyObject target, Point targetPoint)
   at System.Windows.OleDropTarget.MS.Win32.UnsafeNativeMethods.IOleDropTarget.OleDrop(Object data, Int32 dragDropKeyStates, Int64 point, Int32& effects)
   at MS.Win32.UnsafeNativeMethods.DoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.OleServicesContext.OleDoDragDrop(IDataObject dataObject, IOleDropSource dropSource, Int32 allowedEffects, Int32[] finalEffect)
   at System.Windows.DragDrop.OleDoDragDrop(DependencyObject dragSource, DataObject dataObject, DragDropEffects allowedEffects)
   at System.Windows.DragDrop.DoDragDrop(DependencyObject dragSource, Object data, DragDropEffects allowedEffects)
   at Aps.SaasHr.M3Migration.Wpf.ViewModel.MigrantVm.<>c__DisplayClass1.<SetCcDrag>b__0(Object sender, MouseEventArgs args) in C:\Documents and Settings\markb\My Documents\Visual Studio 2010\Projects\Aps.SaasHr\Aps.SaasHr.M3Migration.Wpf\ViewModel\MigrantVm.cs:line 71
   at System.Windows.Input.MouseEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   at System.Windows.Input.MouseDevice.Synchronize()
   at System.Windows.Input.MouseDevice.PostProcessInput(Object sender, ProcessInputEventArgs e)
   at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(ProcessInputEventHandler postProcessInput, ProcessInputEventArgs processInputEventArgs)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   at System.Windows.Threading.Dispatcher.Run()
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at System.Windows.Application.Run(Window window)
   at System.Windows.Application.Run()
   at Aps.SaasHr.M3Migration.Wpf.App.Main() in C:\Documents and Settings\markb\My Documents\Visual Studio 2010\Projects\Aps.SaasHr\Aps.SaasHr.M3Migration.Wpf\obj\Debug\App.g.cs:line 0
   at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

 

 

Here is the class. Note the child property of the same type as the owner here. I'm guessing this has something to do with my problem. Oddly enough, setting this property isn't what throws the exception. Even odder, it seems to only happen under certain conditions. Very puzzling.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Csla;

namespace Aps.SaasHr.Library.M3Migration
{
    public class CcLeaf : Csla.BusinessBase<CcLeaf>
    {
        public static readonly PropertyInfo<string> NameProperty = RegisterProperty<string>(c => c.Name);
        public string Name
        {
            get { return GetProperty(NameProperty); }
            set { SetProperty(NameProperty, value); }
        }

        public static readonly PropertyInfo<int> M3LevelProperty = RegisterProperty<int>(c => c.M3Level);
        public int M3Level
        {
            get { return GetProperty(M3LevelProperty); }
            set { SetProperty(M3LevelProperty, value); }
        }

        public static readonly PropertyInfo<string> ExternIdProperty = RegisterProperty<string>(c => c.ExternId);
        public string ExternId
        {
            get { return GetProperty(ExternIdProperty); }
            set { SetProperty(ExternIdProperty, value); }
        }

        public static readonly PropertyInfo<CcLeaf> LeafParentProperty = RegisterProperty<CcLeaf>(c => c.LeafParent);
        public CcLeaf LeafParent
        {
            get { return GetProperty(LeafParentProperty); }
            set { SetProperty(LeafParentProperty, value); }
        }


        public static readonly PropertyInfo<CcLeafs> LeafChildrenProperty = RegisterProperty<CcLeafs>(c => c.LeafChildren, "Cost Center Tree Leafs", null, RelationshipTypes.Child);
        public CcLeafs LeafChildren
        {
            get { return GetProperty(LeafChildrenProperty); }
            private set { SetProperty(LeafChildrenProperty, value); }
        }



        public static readonly PropertyInfo<string> Cust1Property = RegisterProperty<string>(c => c.Cust1);
        public string Cust1
        {
            get { return GetProperty(Cust1Property); }
            set { SetProperty(Cust1Property, value); }
        }

        public static readonly PropertyInfo<string> Cust2Property = RegisterProperty<string>(c => c.Cust2);
        public string Cust2
        {
            get { return GetProperty(Cust2Property); }
            set { SetProperty(Cust2Property, value); }
        }

        public static readonly PropertyInfo<string> Cust3Property = RegisterProperty<string>(c => c.Cust3);
        public string Cust3
        {
            get { return GetProperty(Cust3Property); }
            set { SetProperty(Cust3Property, value); }
        }

        public static readonly PropertyInfo<string> Cust4Property = RegisterProperty<string>(c => c.Cust4);
        public string Cust4
        {
            get { return GetProperty(Cust4Property); }
            set { SetProperty(Cust4Property, value); }
        }

        public static readonly PropertyInfo<string> Cust5Property = RegisterProperty<string>(c => c.Cust5);
        public string Cust5
        {
            get { return GetProperty(Cust5Property); }
            set { SetProperty(Cust5Property, value); }
        }

        public string GetPath()
        {
            string result = Name;
            CcLeaf parent = LeafParent;
            while (parent != null)
            {
                result = string.Format("{0}/{1}", parent.Name, result);
                parent = parent.LeafParent;
            }
            return result;
        }


        internal static CcLeaf Create(CcLeaf parent, string name)
        {
            return Csla.DataPortal.CreateChild<CcLeaf>(new object[] {parent, name});
        }

        private void Child_Create(CcLeaf parent, string name)
        {
            LoadProperty(LeafParentProperty, parent);
            LoadProperty(NameProperty, name);
            LoadProperty(LeafChildrenProperty, CcLeafs.Create());
            BusinessRules.CheckRules();
        }
    }
}

JonnyBee replied on Tuesday, August 16, 2011

Just a wild guess but could it possibly be that your app creates circular ownerships?

 

Parent

- Leafs

    - Leaf 1

    - Leaf 2

        - Leafs

           - Leaf 4

               - Leafs

                  - Leaf 2

                    - x

That would account for creating a circular reference and Child_Changed events would go on forever until Stack Overflow exception is thrown.

decius replied on Wednesday, August 17, 2011

It would appear that's somehow happening, I just can't understand why. I have 5 treeviews that's binding to my view model here. I have a drag drop operation that drops to the first treeview fine, then when dropping to the second (bound to a completely different instance of CcLeafs) is where I experience the problem.So it's acting like even though it's bound to an entirely DIFFERENT instance of CcLeaf, it's somehow adding to the LeafChildren property of the FIRST instance. I'm wondering if CSLA is somehow returning the reflected property improperly from the cache or something, because that's what it's acting like....

I don't think the M3Dept class is really important here, so I left that out...

Here's my view model:

        #region Drop Commands and Attached Properties

        #region CcDrag Attached Property

        /// <summary>
        /// The CcDrag attached property's name.
        /// </summary>
        public const string CcDragPropertyName = "CcDrag";

        /// <summary>
        /// Gets the value of the CcDrag attached property
        /// for a given dependency object.
        /// </summary>
        /// <param name="obj">The object for which the property value
        /// is read.</param>
        /// <returns>The value of the CcDrag property of the specified object.</returns>
        public static string GetCcDrag(System.Windows.Controls.TextBlock obj)
        {
            return (string)obj.GetValue(CcDragProperty);
        }

        /// <summary>
        /// Sets the value of the CcDrag attached property
        /// for a given dependency object.
        /// </summary>
        /// <param name="obj">The object to which the property value
        /// is written.</param>
        /// <param name="value">Sets the CcDrag value of the specified object.</param>
        public static void SetCcDrag(System.Windows.Controls.TextBlock obj, string value)
        {
            obj.SetValue(CcDragProperty, value);
            obj.MouseMove += (sender, args) =>
                                 {
                                     DragDrop.DoDragDrop(obj, obj.Tag, DragDropEffects.All);
                                 };
        }

        /// <summary>
        /// Identifies the CcDrag attached property.
        /// </summary>
        public static readonly DependencyProperty CcDragProperty = DependencyProperty.RegisterAttached(
            CcDragPropertyName,
            typeof(string),
            typeof(System.Windows.Controls.TextBlock),
            new UIPropertyMetadata(null));

        #endregion

        #region CcDrop Attached Property


        /// <summary>
        /// The CcDrop attached property's name.
        /// </summary>
        public const string CcDropPropertyName = "CcDrop";

        /// <summary>
        /// Gets the value of the CcDrop attached property
        /// for a given dependency object.
        /// </summary>
        /// <param name="obj">The object for which the property value
        /// is read.</param>
        /// <returns>The value of the CcDrop property of the specified object.</returns>
        public static string GetCcDrop(System.Windows.Controls.TextBlock obj)
        {
            return (string)obj.GetValue(CcDropProperty);
        }

        /// <summary>
        /// Sets the value of the CcDrop attached property
        /// for a given dependency object.
        /// </summary>
        /// <param name="obj">The object to which the property value
        /// is written.</param>
        /// <param name="value">Sets the CcDrop value of the specified object.</param>
        public static void SetCcDrop(System.Windows.Controls.TextBlock obj, string value)
        {
            obj.SetValue(CcDropProperty, value);
            obj.Drop += (sender, args) =>
            {

                M3Cc m3Cc = (M3Cc)args.Data.GetData(typeof(M3Cc));
                if (m3Cc != null)
                {
                    CcDrop.Execute(new[] { obj.Tag, m3Cc });
                }
                else
                {
                    CcLeaf leaf = (CcLeaf)args.Data.GetData(typeof(CcLeaf));
                    if (leaf != null)
                    {
                        CcDrop.Execute(new[] { obj.Tag, leaf });
                    }
                    else
                    {
                        M3Dept dept = (M3Dept)args.Data.GetData(typeof(M3Dept));
                        if (dept != null)
                        {
                            CcDrop.Execute(new[] { obj.Tag, dept });
                        }
                    }
                }
            };
        }

        /// <summary>
        /// Identifies the CcDrop attached property.
        /// </summary>
        public static readonly DependencyProperty CcDropProperty = DependencyProperty.RegisterAttached(
            CcDropPropertyName,
            typeof(string),
            typeof(System.Windows.Controls.TextBlock),
            new PropertyMetadata(string.Empty));

        #endregion

#endregion

 

 

 

 

 

#region CcDrop Command

        public static RelayCommand<object[]> CcDrop = new RelayCommand<object[]>(x => DoCcDrop((CcLeaf)x[0], x[1]));


        public static void DoCcDrop(CcLeaf dropTo, object dropped)
        {
            if (dropTo == null) throw new ArgumentNullException("dropTo", "Parameter dropTo cannot be null.");
            if (dropped == null) throw new ArgumentNullException("dropped", "Parameter dropped cannot be null.");

            if (dropTo.Equals(dropped)) return;

            if (dropped is CcLeaf)
            {
                CcLeaf parent = dropTo.LeafParent;
                while (parent != null)
                {
                    // don't allow dropping into self's hierarchy
                    if (parent.Equals(dropped)) return;
                    parent =parent.LeafParent;
                }

                parent = ((CcLeaf)dropped).LeafParent;
                if (parent != null)
                {
                    // the leaf was moved from elsewhere, so first remove it from the old parent
                    parent.LeafChildren.Remove((CcLeaf)dropped);
                }
                // add the leaf to the new location in the tree
                dropTo.LeafChildren.Add((CcLeaf)dropped);
            }
            else if (dropped is M3Cc)
            {
                var leaf = dropTo.LeafChildren.AddNew();
                leaf.Name = ((M3Cc)dropped).Name;
                leaf.M3Level = ((M3Cc)dropped).Level;
            }
            else if (dropped is M3Dept)
            {
                var dept = (M3Dept)dropped;
                dropTo.Name = dept.Name;
                foreach (var c in dept.Ccs)
                    dropTo.LeafChildren.NewLeaf(c.Name, dropTo);
            }
        }

        #endregion

 

 

And here's the view code:

 

        <!--Display items that can be dragged onto CcLeafs here... -->
       
        <StackPanel Grid.Row="1" Grid.Column="0">
            <StackPanel.Resources>
                <HierarchicalDataTemplate x:Key="DeptTemplate" ItemsSource="{Binding Ccs}">
                    <!--Display the Department name-->
                    <TextBlock Text="{Binding Path=Name}" vm:MigrantVm.CcDrag="" Tag="{Binding}"></TextBlock>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <DataTemplate>
                            <!--Display the cost center-->
                            <TextBlock Text="{Binding Path=Name}" Tag="{Binding}" vm:MigrantVm.CcDrag=""></TextBlock>
                        </DataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </StackPanel.Resources>
            <TreeView ItemTemplate="{StaticResource DeptTemplate}" ItemsSource="{Binding M3Depts}"></TreeView>
        </StackPanel>

 

 

 

 <!--Display CcLeafs that items can be dragged to here...-->
       
        <StackPanel Grid.Row="1" Grid.Column="1">
            <StackPanel.Resources>
                <Style x:Key="CcTextBlockStyle" TargetType="TextBlock">
                    <Setter Property="Text" Value="{Binding Path=Name}"></Setter>
                    <Setter Property="AllowDrop" Value="True"></Setter>
                    <Setter Property="Tag" Value="{Binding}"></Setter>
                    <Setter Property="HorizontalAlignment" Value="Stretch"></Setter>
                </Style>
                <HierarchicalDataTemplate x:Key="CcTreeItemTemplate" ItemsSource="{Binding Path=LeafChildren}">
                   
                    <!--Display the root leaf name-->
                    <TextBlock Style="{StaticResource CcTextBlockStyle}" vm:MigrantVm.CcDrop="" vm:MigrantVm.CcDrag=""></TextBlock>
                    <HierarchicalDataTemplate.ItemTemplate>
                        <HierarchicalDataTemplate ItemsSource="{Binding LeafChildren, Converter={StaticResource Debug}}">
                            <!--Display the next leaf-->
                            <TextBlock Style="{StaticResource CcTextBlockStyle}" vm:MigrantVm.CcDrop="" vm:MigrantVm.CcDrag=""></TextBlock>
                            <HierarchicalDataTemplate.ItemTemplate>
                                <DataTemplate>
                                    <!--Display the next leaf-->
                                    <TextBlock Style="{StaticResource CcTextBlockStyle}" vm:MigrantVm.CcDrop="" vm:MigrantVm.CcDrag=""></TextBlock>
                                </DataTemplate>
                            </HierarchicalDataTemplate.ItemTemplate>
                        </HierarchicalDataTemplate>
                    </HierarchicalDataTemplate.ItemTemplate>
                </HierarchicalDataTemplate>
            </StackPanel.Resources>
            <TreeView ItemsSource="{Binding Migrant.CcTree1}" ItemTemplate="{StaticResource CcTreeItemTemplate}"  ></TreeView>
            <TreeView ItemsSource="{Binding Migrant.CcTree2}" ItemTemplate="{StaticResource CcTreeItemTemplate}"  ></TreeView>
            <TreeView ItemsSource="{Binding Migrant.CcTree3}" ItemTemplate="{StaticResource CcTreeItemTemplate}"  ></TreeView>
            <TreeView ItemsSource="{Binding Migrant.CcTree4}" ItemTemplate="{StaticResource CcTreeItemTemplate}"  ></TreeView>
            <TreeView ItemsSource="{Binding Migrant.CcTree5}" ItemTemplate="{StaticResource CcTreeItemTemplate}"  ></TreeView>
        </StackPanel>

decius replied on Wednesday, August 17, 2011

Stepping through the code, the propertyArgs.PropertyName during the RaiseChildChanged event is always "Count" and the childObject is always the same.... interesting. Still don't get how this is happening though. :(

Copyright (c) Marimer LLC