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

点击DisplayAlert的OK按钮清除CollectionView选中项时遇索引越界错误

解决CollectionView清除选中项时的索引越界问题

错误原因

当调用collectionView.SelectedItems.Clear()清空选中项时,CollectionView会再次触发SelectionChanged事件。此时e.CurrentSelection是空集合,代码中直接访问e.CurrentSelection[0]就会抛出索引超出范围的异常。

修复方案

在处理SelectionChanged事件时,先判断e.CurrentSelection是否包含元素,避免空集合的索引访问操作。同时保留类型转换的空值判断,确保代码安全。

修改后的完整代码

private async void collectionView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    // 空选中集合直接返回,避免索引越界
    if (e.CurrentSelection.Count == 0)
        return;

    var itemSelected = e.CurrentSelection[0] as regci;
    // 类型转换失败也直接返回
    if (itemSelected == null)
        return;

    var res = await DisplayAlert($"{itemSelected.Cliente} - {itemSelected.Equipo}",
       $"\nRpm del motor: {itemSelected.Motor} rpm\n\n" +
       $"Diámetro de polea motriz: {itemSelected.Motriz} in\n\n" +
       $"Diámetro de polea conducida: {itemSelected.Condu} in\n\n" +
       $"Amplitud: {itemSelected.Amp} in\n\n" +
       $"Frecuencia del sistema: {itemSelected.Frec} rpm\n\n" +
       $"Fuerza G: {itemSelected.FG}\n", "OK", "-");
    if (res)
    {
        collectionView.SelectedItems.Clear();
    }
}

额外优化说明

  • 简化了字符串拼接逻辑,去掉了冗余的{"-"}这类写法,让代码更易读。
  • 增加的两层判断确保了事件处理过程中的所有边界情况都被覆盖,不会再出现索引越界的问题。

内容的提问来源于stack exchange,提问作者Jaime Edmundo Silva Magallanes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:52:39