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

MAUI中CollectionView重复点击同一项无法触发SelectionChanged问题

MAUI CollectionView重复点击同一项触发SelectionChanged的解决方法

你遇到的问题是因为在SelectionChanged事件处理过程中直接修改选中状态,MAUI的CollectionView内部逻辑会忽略这次同步修改,导致再次点击同一项时无法检测到选择变化。

解决方法很简单,通过Dispatcher异步延迟清除选中状态,让当前事件处理完成后再更新选择状态:

修改你的事件处理代码如下:

private async void colView_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var selectedPick = e.CurrentSelection.FirstOrDefault() as Pick;
    if (selectedPick == null) return;

    // ... 这里执行你的业务逻辑 ...

    // 异步延迟清除选中状态,确保当前事件处理完成
    await Dispatcher.DispatchAsync(() =>
    {
        colView.SelectedItem = null; // Single模式下用SelectedItem更直接
    });
}

原理说明

在SelectionChanged事件触发时,CollectionView正处于选择状态的更新流程中,同步修改SelectedItem或SelectedItems会被内部的状态检测逻辑跳过。使用Dispatcher.DispatchAsync将清除操作放到UI线程的任务队列中,等当前的事件处理完成后再执行,这样下次点击同一项时,控件能正确识别“未选中→选中”的状态变化,从而再次触发SelectionChanged事件。

另外,你的XAML代码不需要做任何修改,保持原有的SelectionMode="Single"即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 21:38:23