Xamarin.Forms 如何获取ListView中Stepper所属项的对象值
实现步骤
你不需要手动遍历视觉树查找父级ViewCell,事件触发时sender就是当前操作的Stepper控件,它的BindingContext属性直接就是当前列表行绑定的ListItem实例,直接取值即可。
修改后的事件处理代码
private void Stepper_ValueChanged(object sender, ValueChangedEventArgs e) { // 校验触发事件的控件类型 if (sender is not Stepper stepper) return; // 从Stepper的绑定上下文获取当前行对应的ListItem对象 if (stepper.BindingContext is not ListItem currentItem) return; // 匹配目标数据行 var targetLine = viewModel.lines.FirstOrDefault(l => l.Ean == currentItem.EAN); if (targetLine == null) return; // 更新字段值 targetLine.QuantityOpen = (int)e.NewValue; }
方案说明
- 该方案完全兼容你当前设置的
RecycleElement列表缓存策略,不会因为ViewCell复用出现数据匹配错误 - 不需要修改现有XAML代码,直接替换后台事件方法即可
- 代码中加入了多层空校验,避免控件初始化加载阶段触发事件时出现空引用异常
- 不需要额外查找父级ViewCell控件:DataTemplate内所有子元素的BindingContext会自动继承自对应行的绑定对象,直接取Stepper自身的BindingContext性能更高。
内容的提问来源于stack exchange,提问作者Elgate
相关产品推荐
相关产品推荐

