I'm developing a Android PCL Xamarin Forms app.
In it I have a page with Listview that is bound to a ObservableCollection
On selecting an item the user is navigated to a new page that gives more information on that item - all pretty bog standard stuff.
However on selecting an item an attribute of the item is changed (i.e. my Message item is marked as 'Read') trouble is the act of changing the item causes the binding stuff to fire which then goes crashes. The stack trace shows many many calls to:
[mono-rt] at (wrapper delegate-invoke) <Module>.invoke_void_object_PropertyChangedEventArgs (object,System.ComponentModel.PropertyChangedEventArgs) <IL 0x00027, 0x00067>
before ending with
[mono-rt] Stacktrace:
[mono-rt]
[mono-rt] at <unknown> <0xffffffff>
[mono-rt] at (wrapper managed-to-native) object.wrapper_native_0xb45b2765 (intptr,intptr,intptr,Android.Runtime.JValue[]) <IL 0x00120, 0xffffffff>
[mono-rt] at (wrapper delegate-invoke) <Module>.invoke_void_intptr_intptr_intptr_JValue[] (intptr,intptr,intptr,Android.Runtime.JValue[]) <IL 0x00062, 0xffffffff>
[mono-rt] at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00040] in /Users/builder/data/lanes/1353/86274adf/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:504
[mono-rt] at Android.Views.View.Measure (int,int) [0x0002d] in /Users/builder/data/lanes/1353/86274adf/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.Views.View.cs:13279
[mono-rt] at Xamarin.Forms.Platform.Android.ViewRenderer
2.GetDesiredSize (int,int) [mono-rt] at Xamarin.Forms.Platform.Android.LabelRenderer.GetDesiredSize (int,int)
[mono-rt] at Xamarin.Forms.Platform.Android.Platform.GetNativeSize (Xamarin.Forms.VisualElement,double,double)
[mono-rt] at Xamarin.Forms.VisualElement.OnSizeRequest (double,double)
[mono-rt] at Xamarin.Forms.VisualElement.GetSizeRequest (double,double)
[mono-rt] at Xamarin.Forms.StackLayout.CalculateNaiveLayout (Xamarin.Forms.StackLayout/LayoutInformation,Xamarin.Forms.StackOrientation,double,double,double,double)
[mono-rt] at Xamarin.Forms.StackLayout.CalculateLayout (Xamarin.Forms.StackLayout/LayoutInformation,double,double,double,double,bool)
[mono-rt] at Xamarin.Forms.StackLayout.OnSizeRequest (double,double)
[mono-rt] at Xamarin.Forms.VisualElement.GetSizeRequest (double,double)
[mono-rt] at Xamarin.Forms.Layout.GetSizeRequest (double,double)
[mono-rt] at Xamarin.Forms.StackLayout.CalculateNaiveLayout (Xamarin.Forms.StackLayout/LayoutInformation,Xamarin.Forms.StackOrientation,double,double,double,double)
[mono-rt] at Xamarin.Forms.StackLayout.CalculateLayout (Xamarin.Forms.StackLayout/LayoutInformation,double,double,double,double,bool)
[mono-rt] at Xamarin.Forms.StackLayout.LayoutChildren (double,double,double,double)
[mono-rt] at Xamarin.Forms.Layout.UpdateChildrenLayout ()
[mono-rt] at Xamarin.Forms.Layout.OnSizeAllocated (double,double)
[mono-rt] at Xamarin.Forms.VisualElement.SizeAllocated (double,double)
[mono-rt] at Xamarin.Forms.Layout.OnChildMeasureInvalidated ()
[mono-rt] at Xamarin.Forms.Layout.OnChildMeasureInvalidated (object,System.EventArgs)
[mono-rt] at Xamarin.Forms.VisualElement.InvalidateMeasure ()
[mono-rt] at Xamarin.Forms.StackLayout.InvalidateMeasure ()
[mono-rt] at Xamarin.Forms.Layout.OnChildMeasureInvalidated ()
[mono-rt] at Xamarin.Forms.Layout.OnChildMeasureInvalidated (object,System.EventArgs)
[mono-rt] at Xamarin.Forms.VisualElement.InvalidateMeasure ()
[mono-rt] at Xamarin.Forms.Label.OnFontAttributesChanged (Xamarin.Forms.BindableObject,object,object)
[mono-rt] at Xamarin.Forms.BindableObject.SetValueActual (Xamarin.Forms.BindableProperty,Xamarin.Forms.BindableObject/BindablePropertyContext,object,bool,Xamarin.Forms.BindableObject/SetValueFlags,bool)
[mono-rt] at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty,object,Xamarin.Forms.BindableObject/SetValueFlags,Xamarin.Forms.BindableObject/SetValuePrivateFlags)
[mono-rt] at Xamarin.Forms.BindableObject.SetValueCore (Xamarin.Forms.BindableProperty,object,Xamarin.Forms.BindableObject/SetValueFlags)
[mono-rt] at Xamarin.Forms.BindingExpression.ApplyCore (object,Xamarin.Forms.BindableObject,Xamarin.Forms.BindableProperty,bool)
[mono-rt] at Xamarin.Forms.BindingExpression.Apply (bool)
[mono-rt] at Xamarin.Forms.BindingExpression/BindingExpressionPart.b__c ()
[mono-rt] at Java.Lang.Thread/RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/1353/86274adf/source/monodroid/src/Mono.Android/src/Java.Lang/Thread.cs:36
[mono-rt] at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) [0x00009] in /Users/builder/data/lanes/1353/86274adf/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Java.Lang.IRunnable.cs:71
[mono-rt] at (wrapper dynamic-method) object.730db309-2271-4a46-a4eb-ccfdf4e5a302 (intptr,intptr)
[mono-rt] at (wrapper native-to-managed) object.730db309-2271-4a46-a4eb-ccfdf4e5a302 (intptr,intptr)
[mono-rt] at <0xffffffff>
[mono-rt] at (wrapper managed-to-native) object.wrapper_native_0xb45b2765 (intptr,intptr,intptr,Android.Runtime.JValue[])
[mono-rt] at (wrapper delegate-invoke) .invoke_void_intptr_intptr_intptr_JValue[] (intptr,intptr,intptr,Android.Runtime.JValue[])
[mono-rt] at Android.Runtime.JNIEnv.CallVoidMethod (intptr,intptr,Android.Runtime.JValue[]) [0x00040] in /Users/builder/data/lanes/1353/86274adf/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:504
[mono-rt] at Android.App.Activity.RunOnUiThread (Java.Lang.IRunnable) [0x0002d] in /Users/builder/data/lanes/1353/86274adf/source/monodroid/src/Mono.Android/platforms/android-21/src/generated/Android.App.Activity.cs:4639
[mono-rt] at Android.App.Activity.RunOnUiThread (System.Action) [0x00000] in /Users/builder/data/lanes/1353/86274adf/source/monodroid/src/Mono.Android/src/Android.App/Activity.cs:23
[mono-rt] at Xamarin.Forms.Forms/AndroidPlatformServices.BeginInvokeOnMainThread (System.Action)
[mono-rt] at Xamarin.Forms.Device.BeginInvokeOnMainThread (System.Action)
[mono-rt] at Xamarin.Forms.BindingExpression/BindingExpressionPart.PropertyChanged (object,System.ComponentModel.PropertyChangedEventArgs)
[mono-rt] at (wrapper delegate-invoke) .invoke_void_object_PropertyChangedEventArgs (object,System.ComponentModel.PropertyChangedEventArgs)
`
I welcome any suggestions on how to work around this issue. I've tried nulling all the bindings before changing the item attribute but to no effect.