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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 02:21:16