【发布时间】:2015-12-14 03:55:51
【问题描述】:
在我的项目中,我有默认 WPF DataGrid 与 ItemsSource 绑定到来自 ViewModel 的业务对象的 ObservableCollection。这个集合非常频繁地更新(可能会添加、删除和更新项目,所有对象都实现了INotifyPropertyChanged)并且一切正常。
允许用户通过单击列标题更改DataGrid 中的排序。这部分也有效(几乎总是)。
当两个事件同时发生(集合修改和数据网格排序)并抛出异常时,会出现该问题,指出在“NewItem”或“EditItem”正在进行时无法执行“排序” (不确切的消息,原始消息不是英文的,我找不到英文版)。
我们也无法在可调试环境中重现该问题,但我们收到了有关它的崩溃报告。
我了解问题的根源和问题所在。但我仍然不知道我应该(我能)做些什么来解决它。我无法手动提交CollectionView 更改和/或延迟排序,因为它位于DataGrid 内部。我无法控制用户排序启用,因为它会给用户带来不便。我什至无法尝试捕获此异常,因为引发的操作来自 Windows 消息泵送(用户操作)并直接进入框架代码。
我是否应该在 ViewModel 中创建CollectionView,对其进行控制并将数据网格绑定到它,但是数据网格的内部视图不会仍然存在同样的问题吗?也许有一些我找不到的常见做法或错误。
如果需要,我可以提供一些代码,但一切似乎都很常见且直截了当。
【问题讨论】:
标签: c# wpf sorting datagrid exception-handling