Xamarin开发中如何访问绑定的ListView的ItemSource计数属性
问题根源
ItemsSource 定义的默认类型为 IEnumerable,该接口本身未提供 Count 属性,你直接访问时会触发编译错误。只有将其转换为实际绑定的集合类型(实现了计数能力的接口/类)后,才能正常读取条目总数。
可直接使用的解决方案
- 方案1:强转为
IList读取(兼容性最高,数组、List<T>、ObservableCollection<T>等绝大多数常用集合都实现了该接口)
int totalCount = 0; if (yourListView.ItemsSource is IList boundList) { totalCount = boundList.Count; }
- 方案2:直接读取
Items集合的Count属性(所有XAML平台通用,无需处理ItemsSource类型,最简便)
int totalCount = yourListView.Items.Count;
- 方案3:使用LINQ的
Count()方法(需提前引入System.Linq命名空间,仅推荐非延迟加载的集合使用,延迟查询集合调用该方法会触发全量遍历,性能偏低)
using System.Linq; int totalCount = yourListView.ItemsSource?.Cast<object>().Count() ?? 0;
- 方案4:强转为你绑定的具体集合类型读取(适合自定义强类型集合场景)
// 示例:绑定的集合类型为 ObservableCollection<GoodsItem> if (yourListView.ItemsSource is ObservableCollection<GoodsItem> goodsList) { totalCount = goodsList.Count; }
优先选择方案1或方案2,无需额外依赖,性能更稳定。
内容的提问来源于stack exchange,提问作者CLAUDIO SEBASTIAN ORTEGA RAMIR
相关产品推荐
相关产品推荐

