我们有以下 WPF:带有行详细信息模板的数据网格。处理此网格上的选定行(客户选择)以触发两个查询以检索地址和联系人数据,然后行详细信息模板在两个选项卡中显示这些数据,每个选项卡都有一个数据网格。所有的魔法都是通过绑定完成的,子网格绑定到主客户对象的属性,我们将其作为 IObservableCollection。
该错误发生在使用键盘上的“下移”箭头时,选定的索引变化很快,比查询结果“回来晚”到界面的速度快,因此数据与显示的内容不一致,无法执行数据更新。我们有一个例外。所以我的问题是:如何以适当的方式防止这种情况发生?
我们是否应该尝试捕获正确类型的模糊异常然后什么都不做(无法应用于接口的松散数据)?我们不想等待数据返回,如果用户滚动速度非常快,客户选择的行应该会向下并且不会显示任何详细信息。也许我们应该在检索选定的项目详细信息之前有一个延迟?因此,如果所选项目在延迟结束之前发生更改,则没有查询?
谢谢你的想法。
代码要点:Xaml:https ://gist.github.com/Xarkam/3b89eb614124bb2f2307 选定索引更改处理:https ://gist.github.com/Xarkam/cf28844ce05fd4984807
编辑 7 月 10 日:
我修改了主要的数据网格项目定义,如下要点:(添加https://
前缀,我没有足够的声誉来添加更多链接,抱歉)gist.github.com/postb99/d3be79f0ef2544d685f9(灵感来自 stackoverflow。 com/questions/13374957/datagrid-throws-invalidoperationexception-by-scrolling 和建议的答案)但问题仍然存在......