在我的项目中,我有默认的WPF DataGrid
,ItemsSource
绑定到ViewModel的业务对象ObservableCollection
。此集合经常更新(可能会添加,删除和更新项目,所有对象都会实现INotifyPropertyChanged
),一切正常。
允许用户通过点击列标题更改DataGrid
中的排序。这部分也有效(几乎总是)。
当两个事件同时发生(集合修改和dataGrid排序)时会发生问题并抛出异常,说明排序'不能在“NewItem'或者' EditItem'正在处理 (不是确切的消息,原始消息不是英文,我找不到英文版)。
此外,我们无法在可调试环境中重现该问题,但我们有崩溃报告。
我明白问题的根源是什么,以及什么是错误的。但我仍然无法弄清楚我(我可以)应该做些什么来解决它。我无法手动提交CollectionView
更改和/或延迟排序,因为它位于DataGrid
内的某处。我无法控制用户排序启用,因为它会给用户带来不便。我甚至无法尝试捕获此异常,因为抛出的操作来自Windows消息抽取(用户操作)并直接进入框架代码。
我是否应该在ViewModel中创建CollectionView
,控制它并将datagrid绑定到它,但是不知道datagrid的内部视图是否还有同样的问题?也许有一些我无法找到的常见做法或错误。
如果需要,我可以提供一些代码,但一切似乎都很常见且直截了当。
答案 0 :(得分:1)
此博客文章就您的问题提供了一些建议。
'分类'在AddNew或EditItem事务期间不允许使用' http://tliangnet.blogspot.com/2015/08/sorting-is-not-allowed-during-addnew-or.html