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
相关产品推荐
相关产品推荐

