MAUI CollectionView怎么用 MAUI列表控件使用教程

MAUI的CollectionView是高性能、跨平台一致的现代化列表控件,支持虚拟化、多种布局、分组、空状态及选中交互。基础使用三步:XAML声明并绑定ItemsSource、定义ItemTemplate、后台初始化集合并设BindingContext。

MAUI 的 CollectionView 是替代传统 ListView 的现代化列表控件,核心优势在于高性能(默认启用虚拟化)、灵活布局(线性/网格/分组)和原生跨平台一致性。用对关键点,不写多余代码也能跑得稳。

基础绑定与显示

只需三步就能让数据动起来:

  • 在 XAML 中声明 CollectionView,并绑定 ItemsSource(必须是 ObservableCollection 或实现 INotifyCollectionChanged 的集合)
  • ItemTemplate 定义每项长什么样,推荐内联 DataTemplate 或提取为资源
  • 后台代码中初始化集合并赋值给绑定源,确保设置 BindingContext

示例片段:






选中与交互控制

默认不响应点击,需显式开启选择能力:

  • SelectionModeSingle(单选)或 Multiple(多选),None 是默认禁用状态
  • 绑定 SelectedItem(单选)或 SelectedItems(多选)到 ViewModel 属性,支持双向绑定
  • 监听 SelectionChanged 事件或绑定 SelectionChangedCommand 做后续逻辑

注意:选中项高亮样式由平台原生提供,无需额外写模板,除非你自定义了 Visual 或容器背景。

分组显示与空状态处理

真实业务常要分类展示或兜底提示:

  • 启用分组:设 IsGrouped="True",数据源必须是 IEnumerable,其中 TGroup 继承 IList 并带 Name 等分组标识属性
  • 定义 GroupHeaderTemplate 控制每组标题外观,GroupFooterTemplate 可选
  • 空数据时用 EmptyView——可以是纯文本字符串,也可以是完整布局(如图标+提示文字+按钮)

性能关键配置

大数据量下卡顿?重点检查这三项:

  • 确认没手动关闭虚拟化:ItemsLayout 不要设 ItemSizingStrategy="MeasureAllItems",保持默认 MeasureFirstItem
  • 滚动时避免频繁刷新整个集合,改用 ObservableCollectionAdd/Remove/Move 方法做增量更新
  • 图片类内容务必配合 FFImageLoading 或 MAUI 内置 Image 的缓存策略,禁用 CacheEnabled="False"

基本上就这些。不需要封装

复杂基类,按需组合属性就能覆盖 95% 场景。