我正在使用PivotViewer并看到从iexplorer.exe抛出此异常。
Silverlight应用程序中的未处理错误
代码:4004
类别:ManagedRuntimeError
消息:System.ArgumentException:ICollectionView只能包含PivotViewer的ItemsSource中的项目
在Microsoft.Internal.Pivot.ViewModels.GridViewModel.UpdateOnModelChanged()
在Microsoft.Internal.Pivot.ViewModels.ViewBaseViewModel.OnUpdateComplete(Object sender,EventArgs e)
在System.Windows.Controls.Pivot.PivotViewerView.ExposeCollectionView(ICollectionView collectionView,CollectionViewSource collectionSource,IDisposable deferrer)
在System.Windows.Controls.Pivot.PivotViewerView.SetModel(PivotViewerProperty sortPivotProperty,IEnumerable`1 source)
在Microsoft.Internal.Pivot.Controls.CollectionViewContainer.UpdateContent()
在Microsoft.Internal.Pivot.Controls.CollectionViewContainer.b__0()
“
以下是我正在做的事情的描述。 pivot viewer的ItemsSource绑定到ViewModel中名为“Sessions”的ObservableCollection。当用户第一次访问我的网站时,他没有登录,我将从远程演示数据库填充枢轴查看器(通过使用WebClient.OpenReadAsync)。当用户登录时,我将清除“会话”并从他自己的数据库中读取数据(使用相同的代码WebClient.OpenReadAsync)。在这一点上,一切都按预期工作。数据透视表显示演示数据并在登录后刷新。
当他退出时,当我使用相同的代码清除“会话”并再次从演示数据库中读取数据时,会出现问题。它引发了上述异常。
我有一个解决方法。当用户注销时,如果我仍然清除“会话”但不添加演示数据库中的任何数据,它将起作用。我可以多次登录和注销,没有任何问题。所以这表明问题可能与我向“Session”ObservableCollection添加数据的代码有关。
我也猜测这是与WebClient的OpenReadAsync引起的线程相关的竞争条件,用于从远程网站读取数据。
我现在被困住了,任何帮助都会受到赞赏。谢谢!