用途:在 .NET MAUI 应用中用 CollectionView 显示可滚动的列表和网格数据,它替代 ListView,性能更好、布局更灵活,且不要求使用 ViewCell。
主要能力与用法:将 ItemsSource 绑定到 ObservableCollection<T>,以便增删项时 UI 自动更新;ItemTemplate 的根元素必须是 Layout 或 View,不能使用 ViewCell;DataTemplate 上应设置 x:DataType 以启用编译绑定。布局支持列表与网格,增量加载(无限滚动)通过 RemainingItemsThreshold 与 RemainingItemsThresholdReachedCommand 实现,但不要配合基于 StackLayout 的 ItemsLayout,应使用 LinearItemsLayout 或 GridItemsLayout。下拉刷新用 RefreshView 包裹 CollectionView,完成后把 IsRefreshing 置回 false。DataTemplate 内的命令无法直接访问 ViewModel,需用 RelativeSource AncestorType 绑定。
性能与限制:统一项尺寸时用 MeasureFirstItem 比默认 MeasureAllItems 更快;始终用 ObservableCollection<T> 而非 List<T>;集合更新需在 UI 线程执行,如 MainThread.BeginInvokeOnMainThread(() => Items.Add(item))。常见问题包括:项变化不刷新、误用 ViewCell 导致崩溃或空白、非 UI 线程更新导致项消失或布局错乱、增量加载无限触发、EmptyView 渲染异常(自定义空视图需包在 ContentView 中)、选中状态不可见(需在模板根元素加 VisualState Name="Selected")以及 SwipeView 命令绑定错误。
适用场景:需要在 MAUI 中实现列表、网格、分组、选择、滚动、空状态、下拉刷新与分页加载的界面。具体平台支持、版本要求与更多细节暂未提供。