Windows phone 8 重新绑定重新加载LongListMultiSelector时崩溃

Windows phone 8 重新绑定重新加载LongListMultiSelector时崩溃,windows-phone-8,crash,bind,multi-select,longlistselector,Windows Phone 8,Crash,Bind,Multi Select,Longlistselector,创建绑定列表的新实例时,我的Windows Phone应用程序崩溃 绑定列表更改: OsyId = Response.recordedBills.Count > 50 ? new List<RecordedBillDetailViewModel>(Response.recordedBills.Take(50)) : new List<RecordedBillDetailViewModel>(Response.recordedBills); OsyId=Respon

创建绑定列表的新实例时,我的Windows Phone应用程序崩溃

绑定列表更改:

OsyId = Response.recordedBills.Count > 50 ? new List<RecordedBillDetailViewModel>(Response.recordedBills.Take(50)) : new List<RecordedBillDetailViewModel>(Response.recordedBills);
OsyId=Response.recordedBills.Count>50?新列表(Response.recordedBills.Take(50)):新列表(Response.recordedBills);
多选民:

<toolkit:LongListMultiSelector ItemsSource="{Binding OsyId}" x:FieldModifier="public" x:Name="longList" EnforceIsSelectionEnabled="{Binding EnforceSelectionEnable}" Margin="0,0,10,0" SelectionChanged="LongListMultiSelector_SelectionChanged" IsSelectionEnabledChanged="LongListMultiSelector_IsSelectionEnabledChanged" MaxHeight="600" Grid.Row="1" HorizontalContentAlignment="Stretch">

事故报告:

   {System.ArgumentException: Value does not fall within the expected range.
   at MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
   at MS.Internal.XcpImports.MethodPack(IntPtr objectPtr, String methodName, Object[] rawData)
   at MS.Internal.XcpImports.UIElement_TransformToVisual(UIElement element, UIElement visual)
   at System.Windows.UIElement.TransformToVisual(UIElement visual)
   at Microsoft.Phone.Controls.LongListMultiSelector.ApplyItemsState(State state, Boolean useTransitions)
   at Microsoft.Phone.Controls.LongListMultiSelector.OnIsSelectionEnabledChanged(DependencyPropertyChangedEventArgs e)
   at Microsoft.Phone.Controls.LongListMultiSelector.OnIsSelectionEnabledPropertyChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
   at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
   at System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp, Object value, Boolean allowReadOnlySet)
   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
   at Microsoft.Phone.Controls.LongListMultiSelector.set_IsSelectionEnabled(Boolean value)
   at Microsoft.Phone.Controls.LongListMultiSelector.UpdateIsSelectionEnabled()
   at Microsoft.Phone.Controls.LongListMultiSelector.OnSelectionChanged(IList removedItems, IList addedItems)
   at Microsoft.Phone.Controls.LongListMultiSelector.OnSelectedItemsCollectionCleared(Object sender, ClearedChangedArgs e)
   at Microsoft.Phone.Controls.LongListMultiSelector.SelectedItemsList.ClearItems()
   at System.Collections.ObjectModel.Collection1.Clear()
   at Microsoft.Phone.Controls.LongListMultiSelector.OnItemsSourceChanged(Object oldValue, Object newValue)
   at Microsoft.Phone.Controls.LongListMultiSelector.OnItemsSourcePropertyChanged(Object sender, DependencyPropertyChangedEventArgs e)
   at System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp, Object oldValue, Object newValue)
   at System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty property, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, ValueOperation operation)
   at System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp)
   at System.Windows.Data.BindingExpression.SendDataToTarget()
   at System.Windows.Data.BindingExpression.SourcePropertyChanged(PropertyPathListener sender, PropertyPathChangedEventArgs args)
   at System.Windows.PropertyPathListener.RaisePropertyPathStepChanged(PropertyPathStep source)
   at System.Windows.PropertyAccessPathStep.RaisePropertyPathStepChanged(PropertyListener source)
   at System.Windows.CLRPropertyListener.SourcePropertyChanged(Object sender, PropertyChangedEventArgs args)
   at System.Windows.Data.WeakPropertyChangedListener.PropertyChangedCallback(Object sender, PropertyChangedEventArgs args)
   at System.ComponentModel.PropertyChangedEventHandler.Invoke(Object sender, PropertyChangedEventArgs e)
   at Windows8.Common.Helpers.NotifyPropertyChanged.OnPropertyChanged(String propertyName)
   at Windows8.Common.Helpers.NotifyPropertyChanged.SetProperty[T](T& storage, T value, String propertyName)
   at Windows8.Common.ViewModels.BillPaymentViewModel.set_OsyId(List`1 value)
   at Windows8.Common.ViewModels.BillPaymentViewModel.<InitiateBillRequestToRecordedBill>d__ee.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Windows8.Common.ViewModels.BillPaymentViewModel.<SetRecordedBillsAction>d__71.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Windows8.Common.ViewModels.CompanyMenu.<BillPaymentSubScreenAction>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Windows8.Common.Helpers.DelegateCommandAsync.<System.Windows.Input.ICommand.Execute>d__0.MoveNext()}
{System.ArgumentException:值不在预期范围内。
在MS.Internal.XcpImports.MethodEx(IntPtr ptr,字符串名,cvvalue[]cvData)
位于MS.Internal.XcpImports.MethodPack(IntPtr objectPtr,String methodName,Object[]rawData)
在MS.Internal.XcpImports.UIElement\u TransformToVisual(UIElement元素,UIElement可视)
位于System.Windows.UIElement.TransformToVisual(UIElement visual)
位于Microsoft.Phone.Controls.LongListMultiSelector.ApplyItemsState(状态状态,布尔值)
位于Microsoft.Phone.Controls.LongListMultiSelector.OnIsSelectEnabledChanged(DependencyPropertyChangedEventArgs e)
在Microsoft.Phone.Controls.LongListMultiSelector.OnIsSelectEnabledPropertyChanged(DependencyObject发件人,DependencyPropertyChangedEventArgs e)中
位于System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp、Object oldValue、Object newValue)
在System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty属性、EffectiveValueEntry oldEntry、EffectiveValueEntry&newEntry、ValueOperation操作)
位于System.Windows.DependencyObject.SetValueInternal(DependencyProperty dp,对象值,布尔AlloreAndonlySet)
位于System.Windows.DependencyObject.SetValue(DependencyProperty dp,对象值)
位于Microsoft.Phone.Controls.LongListMultiSelector.set_IsSelectionEnabled(布尔值)
在Microsoft.Phone.Controls.LongListMultiSelector.UpdateSelectionEnabled()中
在Microsoft.Phone.Controls.LongListMultiSelector.OnSelectionChanged(IList removedItems,IList addedItems)
在Microsoft.Phone.Controls.LongListMultiSelector.OnSelectedItemsCollectionCleared(对象发送方,ClearedChangedArgs e)
在Microsoft.Phone.Controls.LongListMultiSelector.SelectedItemsList.ClearItems()中
位于System.Collections.ObjectModel.Collection1.Clear()处
位于Microsoft.Phone.Controls.LongListMultiSelector.OnItemSourceChanged(对象旧值,对象新值)
在Microsoft.Phone.Controls.LongListMultiSelector.OnItemSourcePropertyChanged中(对象发送方,DependencyPropertyChangedEventArgs e)
位于System.Windows.DependencyObject.RaisePropertyChangeNotifications(DependencyProperty dp、Object oldValue、Object newValue)
在System.Windows.DependencyObject.UpdateEffectiveValue(DependencyProperty属性、EffectiveValueEntry oldEntry、EffectiveValueEntry&newEntry、ValueOperation操作)
位于System.Windows.DependencyObject.RefreshExpression(DependencyProperty dp)
位于System.Windows.Data.BindingExpression.SendDataToTarget()处
位于System.Windows.Data.BindingExpression.SourcePropertyChanged(PropertyPathListener发件人,PropertyPathChangedEventArgs参数)
位于System.Windows.PropertyPathListener.RaisePropertyPathStepChanged(PropertyPathStep源)
位于System.Windows.PropertyAccessPathStep.RaisePropertyPathStepChanged(PropertyListener源)
位于System.Windows.CLRPropertyListener.SourcePropertyChanged(对象发送方,PropertyChangedEventArgs参数)
位于System.Windows.Data.WeakPropertyChangedListener.PropertyChangedCallback(对象发送方,PropertyChangedEventArgs参数)
在System.ComponentModel.PropertyChangedEventHandler.Invoke(对象发送方,PropertyChangedEventArgs e)
在Windows8.Common.Helpers.NotifyPropertyChanged.OnPropertyChanged(字符串propertyName)
在Windows8.Common.Helpers.NotifyPropertyChanged.SetProperty[T](T&storage,T值,字符串propertyName)
在Windows8.Common.ViewModels.BillPaymentViewModel.set_OsyId上(列出'1个值)
在Windows8.Common.ViewModels.BillPaymentViewModel.d_uee.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.TaskAwaiter.GetResult()中
在Windows8.Common.ViewModels.BillPaymentViewModel.d_u71.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.TaskAwaiter.GetResult()中
在Windows8.Common.ViewModels.CompanyMenu.d_u0.MoveNext()上
---来自引发异常的上一个位置的堆栈结束跟踪---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)
在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中
在System.Runtime.CompilerServices.TaskAwaiter.GetResult()中
在Windows8.Common.Helpers.DelegateCommandAsync.d_u0.MoveNext()}

如何解决此问题?

不要创建新实例,而是尝试清除并向列表中添加项目。这可能有助于解决问题。这是假设
OsyId
是一个
observedcollection

谢谢,
Shubhan

正如@Shubhan所说,它必须只通过
可观察的集合
进行绑定,因为它使用
INotifyCollectionChanged
事件
。列表使用的是
IPropertyChangedEvent
。在
LongListSelector
中有这样一个事件:

xxxxx as INotifyCollectionChange;
它正在使用
xxxx
事件重新绑定或调整事务大小

谢谢

xxxxx as INotifyCollectionChange;