You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取Collection View全部IndexPath(含不可见)的C#实现需求

在C#(MVVMCross)中获取CollectionView所有IndexPath以强制加载全部单元格

我完全理解你的处境——未加载的单元格因为绑定仅在awakeFromNib时创建,导致全选按钮点击时这些单元格无法同步选中状态,只能通过强制加载所有单元格来解决。下面是对应你给出的Swift代码的C#实现,适配你的MVVMCross项目:

// 收集所有section和item对应的IndexPath
var indexPaths = new List<NSIndexPath>();
for (int section = 0; section < CollectionView.NumberOfSections(); section++)
{
    int itemCount = CollectionView.NumberOfItemsInSection(section);
    for (int item = 0; item < itemCount; item++)
    {
        indexPaths.Add(NSIndexPath.FromItemSection(item, section));
    }
}

// 强制加载所有单元格
CollectionView.ReloadItems(indexPaths.ToArray());

补充说明:

  • 这段代码的逻辑和你熟悉的Swift版本完全一致:遍历所有分区,再遍历每个分区下的所有条目,生成对应的NSIndexPath集合,最后调用ReloadItems触发所有单元格的加载。
  • 虽然强制加载全部单元格确实不是性能最优的方案,但在你当前的场景下是可行的临时解决办法。如果后续有优化空间,建议考虑将复选框的选中状态直接绑定到ViewModel的数据源对象上——这样即使单元格未加载,数据源的状态已经更新,等单元格被滚动加载时会自动同步选中状态,不过这需要调整现有的绑定逻辑,考虑到你项目规模较大,暂时用当前方案是合理的。

内容的提问来源于stack exchange,提问作者janavarro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:37:36