Xamarin.Forms XAML中ListView新增项无法自动选中问题咨询
问题根因
无法自动选中新增条目的核心原因有2个:
selecteditem属性的get访问器编写错误:当前代码中selecteditem的getter返回的是_number字段,而非属性对应的_selecteditem字段。你在Add点击逻辑中给selecteditem赋值后,UI读取该属性时拿到的始终是_number的值,无法获取你设置的选中目标,自然不会触发ListView的选中状态更新。- 绑定模式未显式声明:Xamarin.Forms不同平台下
ListView.SelectedItem的默认绑定方向存在差异,部分场景下单向绑定会导致ViewModel侧的属性变更无法同步到UI。
修复方案
1. 修正ViewModel中的属性代码
将selecteditem属性的get访问器修正为返回对应支撑字段,修正后的代码段如下:
private string _selecteditem { get; set; } public string selecteditem { // 原错误写法:get => _number; get => _selecteditem; set { _selecteditem = value; OnPropertyChanged(); } }
2. 显式配置XAML绑定模式
修改ListView的SelectedItem绑定,显式指定为双向绑定,规避平台默认配置差异问题:
<ListView ItemsSource="{Binding numbers}" SelectedItem="{Binding selecteditem, Mode=TwoWay}"> </ListView>
效果验证
修复后点击Add按钮的执行逻辑可正常跑通:
number值累加后触发属性通知,顶部Label正常展示更新后的数值- 新值加入
numbers集合时,ObservableCollection自动通知ListView渲染新增条目 selecteditem赋值后可被UI正确读取,属性变更通知触发ListView更新选中状态,自动定位到刚新增的条目
注:由于你使用的是string类型作为集合项,字符串按值相等比较,不需要额外从集合中取对应实例引用,现有赋值逻辑可直接生效。
内容的提问来源于stack exchange,提问作者irowake
相关产品推荐
相关产品推荐

