【发布时间】:2021-03-21 19:28:46
【问题描述】:
我有一个ObservableCollection,用作Xamarin Forms DataGrid 的ItemsSource。集合中的每个视图模型都有一个可观察的IsSelected 属性,绑定到数据网格行模板中的Switch。此数据网格中最多可以有约 20k 行。
有用于“全选”和“全选”的按钮,它们可以满足您的期望:它们将此属性设置为集合中每个元素 的适当值。对于大型集合,这需要几秒钟才能完成,原因是处理所有这些属性更改通知以保持 UI 同步。
有没有办法批量处理这些更改通知,或者暂停它们并以老式方式更新 UI,或者做其他事情来提高性能?我为batching PropertyChanged notifications 看到的技术涉及将多个更改合并到同一对象上的同一属性,这不是我遇到的问题。
【问题讨论】:
-
“最多约 20k 行” - 我强烈建议重新考虑这一点。移动设备上的用户真的需要 20k 行数据吗?您至少可以虚拟化显示,以便只更新可见行吗?
-
@Jason 我确实相信这个问题域中的用户在现场时需要访问他们的数据,是的。 “虚拟化显示”我认为需要修改第三方DataGrid插件,原则上是可能的,我想知道它是否有一个共同的模式。
-
如果这确实是一个需求,我会考虑支持虚拟化的商业组件,而不是您正在使用的免费组件
-
@Jason 我已经问过是否有预算,但被告知没有。
标签: performance xamarin.forms inotifypropertychanged