异常原因 - 添加项目不会出现在给定索引处

时间:2013-09-09 08:57:08

标签: c# wpf exception

我的视图模型中有一个ICollectionView绑定到DataGrid。当我执行添加/删除操作时。我得到了这个例外。

我无法更改CollectionView。任何人都可以告诉我这个例外的原因,以便我可以找到解决方案。

例外:

  

“添加的项目不会出现在给定的索引”

堆栈追踪:

  

at System.Windows.Data.ListCollectionView.AdjustBefore(NotifyCollectionChangedAction action,Object item,Int32 index)      在System.Windows.Data.ListCollectionView.CommitNew()      在System.Windows.Controls.DataGrid.CommitRowItem()      在System.Windows.Controls.DataGrid.OnExecutedCommitEdit(ExecutedRoutedEventArgs e)      在System.Windows.Input.CommandBinding.OnExecuted(Object sender,ExecutedRoutedEventArgs e)      在System.Windows.Input.CommandManager.ExecuteCommandBinding(Object sender,ExecutedRoutedEventArgs e,CommandBinding commandBinding)      在System.Windows.Input.CommandManager.FindCommandBinding(CommandBindingCollection commandBindings,Object sender,RoutedEventArgs e,ICommand command,Boolean execute)      在System.Windows.Input.CommandManager.FindCommandBinding(对象发送者,RoutedEventArgs e,ICommand命令,布尔执行)      在System.Windows.Input.CommandManager.OnExecuted(Object sender,ExecutedRoutedEventArgs e)      在System.Windows.RoutedEventArgs.InvokeHandler(委托处理程序,对象目标)      at System.Windows.EventRoute.InvokeHandlersImpl(Object source,RoutedEventArgs args,Boolean reRaised)      在System.Windows.UIElement.RaiseEventImpl(DependencyObject sender,RoutedEventArgs args)      在System.Windows.Input.RoutedCommand.ExecuteImpl(Object parameter,IInputElement target,Boolean userInitiated)      在System.Windows.Controls.DataGrid.EndEdit(RoutedCommand命令,DataGridCell cellContainer,DataGridEditingUnit editingUnit,Boolean exitEditMode)      在System.Windows.Controls.DataGrid.OnCurrentCellChanged(DependencyObject d,DependencyPropertyChangedEventArgs e)

由于

2 个答案:

答案 0 :(得分:0)

虽然我有同样的问题“添加的项目没有出现在给定的索引'0' 我正在寻找它并找到了这个未解决的帖子。

在我的个人档案中,我向collescion asynchon提供数据,所以我所要做的就是在其中添加一个SynchronizationContext。

和我们一样,在我填充observablecollection之前我只需要:

 _synchronizationContext.Acquire();
 (ObservableCollectionName).Add(YourItem);
 _synchronizationContext.Release();

即使这是一个旧帖子,我希望它至少会帮助其他人:=)

答案 1 :(得分:-1)