我的视图模型中有一个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)
由于
答案 0 :(得分:0)
虽然我有同样的问题“添加的项目没有出现在给定的索引'0' 我正在寻找它并找到了这个未解决的帖子。
在我的个人档案中,我向collescion asynchon提供数据,所以我所要做的就是在其中添加一个SynchronizationContext。
和我们一样,在我填充observablecollection之前我只需要:
_synchronizationContext.Acquire();
(ObservableCollectionName).Add(YourItem);
_synchronizationContext.Release();
即使这是一个旧帖子,我希望它至少会帮助其他人:=)
答案 1 :(得分:-1)