CollectionView
.NET Multi-platform App UI (.NET MAUI) CollectionView 是使用不同的布局规范呈现数据列表的视图。 它旨在为 ListView 提供一种更灵活、更高性能的替代方案。
以下屏幕截图显示使用两列垂直网格并允许进行多重选择的 CollectionView:
CollectionView 应用于显示需要滚动或选择的数据列表。 当要显示的数据不需要滚动或选择时,可以使用可绑定布局。 有关详细信息,请参阅 BindableLayout。
CollectionView 和 ListView 差异
虽然 CollectionView 和 ListView API 相似,但存在一些显著差异:
- CollectionView 有灵活的布局模型,允许在列表或网格中垂直或水平呈现数据。
- CollectionView 支持单个和多重选择。
- CollectionView 没有单元格的概念。 相反,数据模板用于定义列表中每个数据项的外观。
- CollectionView 自动利用基础本机控件提供的虚拟化。
- CollectionView 可减少 ListView 的 API 图面。 ListView 中的许多属性和事件不存在于 CollectionView 中。
- CollectionView 不包括内置分隔符。
- 如果
ItemsSource
在 UI 线程之外更新,CollectionView 将触发异常。
从 ListView 移动到 CollectionView
可借助下表将 ListView 实现迁移到 CollectionView 实现:
概念 | ListView API | CollectionView |
---|---|---|
数据 | ItemsSource |
通过设置 CollectionView 的 ItemsSource 属性对其填充数据。 有关详细信息,请参阅使用数据填充 CollectionView。 |
项外观 | ItemTemplate |
通过将 ItemTemplate 属性设置为 DataTemplate,可以定义 CollectionView 中每个项的外观。 有关详细信息,请参阅定义项外观。 |
单元 | TextCell、ImageCell、ViewCell | CollectionView 没有单元格的概念,因此没有披露指标的概念。 相反,数据模板用于定义列表中每个数据项的外观。 |
行分隔符 | SeparatorColor 、SeparatorVisibility |
CollectionView 不包括内置分隔符。 如果需要,可以在项模板中提供这些内容。 |
选择 | SelectionMode 、SelectedItem |
CollectionView 支持单个和多重选择。 有关详细信息,请参阅配置 CollectionView 项选择。 |
行高 | HasUnevenRows 、RowHeight |
在 CollectionView 中,每个项的行高由 ItemSizingStrategy 属性确定。 有关详细信息,请参阅调整项大小。 |
缓存 | CachingStrategy |
CollectionView 自动使用基础本机控件提供的虚拟化。 |
页眉和页脚 | Header , HeaderElement , HeaderTemplate , Footer , FooterElement , FooterTemplate |
通过 Header 、Footer 、HeaderTemplate 和 FooterTemplate 属性,CollectionView 可以显示随列表中的项一起滚动的页眉和页脚。 有关详细信息,请参阅页眉和页脚。 |
分组 | GroupDisplayBinding , GroupHeaderTemplate , GroupShortNameBinding , IsGroupingEnabled |
通过将其 IsGrouped 属性设置为 true ,CollectionView 可显示正确分组的数据。 通过将 GroupHeaderTemplate 和 GroupFooterTemplate 属性设置为 DataTemplate 对象,可以自定义组页眉和组页脚。 有关详细信息,请参阅在 CollectionView 中显示分组数据。 |
下拉刷新 | IsPullToRefreshEnabled , IsRefreshing , RefreshAllowed , RefreshCommand , RefreshControlColor , BeginRefresh() , EndRefresh() |
通过将 CollectionView 设置为 RefreshView 的子项,可以实现“下拉以刷新”功能。 有关详细信息,请参阅下拉以刷新。 |
上下文菜单项 | ContextActions |
通过将 SwipeView 设置为 DataTemplate 中的根视图,可支持使用上下文菜单项,该视图用于定义 CollectionView 中每个数据项的外观。 有关详细信息,请参阅上下文菜单。 |
滚动 | ScrollTo() |
CollectionView 定义将项滚动到视图中的 ScrollTo 方法。 有关详细信息,请参阅在 CollectionView 中控制滚动。 |