【问题标题】:WPF DataGrid Sorting Throws exception on Item addingWPF DataGrid排序在添加项目时引发异常
【发布时间】:2015-12-14 03:55:51
【问题描述】:

在我的项目中,我有默认 WPF DataGridItemsSource 绑定到来自 ViewModel 的业务对象的 ObservableCollection。这个集合非常频繁地更新(可能会添加、删除和更新项目,所有对象都实现了INotifyPropertyChanged)并且一切正常。

允许用户通过单击列标题更改DataGrid 中的排序。这部分也有效(几乎总是)。

当两个事件同时发生(集合修改和数据网格排序)并抛出异常时,会出现该问题,指出在“NewItem”或“EditItem”正在进行时无法执行“排序” (不确切的消息,原始消息不是英文的,我找不到英文版)。

我们也无法在可调试环境中重现该问题,但我们收到了有关它的崩溃报告。

我了解问题的根源和问题所在。但我仍然不知道我应该(我能)做些什么来解决它。我无法手动提交CollectionView 更改和/或延迟排序,因为它位于DataGrid 内部。我无法控制用户排序启用,因为它会给用户带来不便。我什至无法尝试捕获此异常,因为引发的操作来自 Windows 消息泵送(用户操作)并直接进入框架代码。

我是否应该在 ViewModel 中创建CollectionView,对其进行控制并将数据网格绑定到它,但是数据网格的内部视图不会仍然存在同样的问题吗?也许有一些我找不到的常见做法或错误。

如果需要,我可以提供一些代码,但一切似乎都很常见且直截了当。

【问题讨论】:

    标签: c# wpf sorting datagrid exception-handling


    【解决方案1】:

    这篇博文就您的问题提出了一些建议。

    在 AddNew 或 EditItem 事务期间不允许“排序” http://tliangnet.blogspot.com/2015/08/sorting-is-not-allowed-during-addnew-or.html

    【讨论】:

    • 感谢链接。我将尝试提出的解决方案,但在仍然通过绑定与其交互的同时管理内部CollectionView 的状态似乎有点错误。稍后将发布另一条带有结果和直接链接的评论
    • 嗯,解决方案似乎有效。没有崩溃,但它看起来仍然是错误的。将继续在后台搜索。
    猜你喜欢
    • 2011-11-19
    • 2012-04-07
    • 2010-10-15
    • 2014-08-28
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    相关资源
    最近更新 更多