Xamarin.Forms CollectionView 简介
CollectionView
是使用不同布局规范显示数据列表的视图。 它的目标是提供取代 ListView
的更灵活、更高效的方案。 例如,以下屏幕截图显示的 CollectionView
使用了一个两列垂直网格,并且它允许多选:
CollectionView
应用于显示需要滚动或选择的数据列表。 当要显示的数据不需要滚动或选择时,可以使用可绑定布局。 有关详细信息,请参阅 Xamarin.Forms 中的可绑定布局。
CollectionView
从 Xamarin.Forms 4.3 起可用。
重要
CollectionView
在 iOS 和 Android 上可用,但在通用 Windows 平台上仅部分可用。
CollectionView 和 ListView 的区别
虽然 CollectionView
和 ListView
API 很相似,但也存在一些显著的差异:
CollectionView
具有灵活的布局模型,允许在列表或网格中垂直或水平显示数据。CollectionView
支持单项和多项选择。CollectionView
没有单元格的概念。 实际上,会使用一个数据模板来定义列表中每个数据项的外观。CollectionView
可自动利用基础本机控件提供的虚拟化。CollectionView
可减少ListView
的 API 图面。ListView
中的许多属性和事件不会出现在CollectionView
中。CollectionView
不包含内置分隔符。- 如果
ItemsSource
在 UI 线程之外更新,CollectionView
将触发异常。
从 ListView 迁移到 CollectionView
可以根据下表的帮助信息,将现有 Xamarin.Forms 应用程序中的 ListView
实现迁移到 CollectionView
实现:
概念 | ListView API | CollectionView |
---|---|---|
数据 | ItemsSource |
可通过设置 CollectionView 的 ItemsSource 属性来向其填充数据。 有关详细信息,请参阅使用数据填充 CollectionView。 |
项外观 | ItemTemplate |
通过将 ItemTemplate 属性设置为 DataTemplate ,可以定义 CollectionView 中每个项的外观。 有关详细信息,请参阅定义项外观。 |
单元 | .- . | CollectionView 没有单元格的概念,因此也没有披露指示器的概念。 实际上,会使用一个数据模板来定义列表中每个数据项的外观。 |
行分隔符 | %> | CollectionView 不包含内置分隔符。 如果需要,可以在项模板中提供这些内容。 |
选择 | %> | CollectionView 支持单项和多项选择。 有关详细信息,请参阅 Xamarin.Forms CollectionView 选择。 |
行高 | %> | 在 CollectionView 中,每个项的行高由 ItemSizingStrategy 属性确定。 有关详细信息,请参阅调整项大小。 |
缓存 | CachingStrategy |
CollectionView 将自动使用基础本机控件提供的虚拟化。 |
页眉和页脚 | CollectionView 可以通过 Header 、Footer 、HeaderTemplate 和 FooterTemplate 属性显示随列表中的项目滚动的页眉和页脚。 有关详细信息,请参阅页眉和页脚。 |
|
分组 | CollectionView 通过将其 IsGrouped 属性设置为 true 来显示正确分组的数据。 通过将 GroupHeaderTemplate 和 GroupFooterTemplate 属性设置为 DataTemplate 对象,可以自定义组页眉和组页脚。 有关详细信息,请参阅 Xamarin.Forms CollectionView 分组。 |
|
下拉以刷新 | 通过将 CollectionView 设置为 RefreshView 的子级,支持“下拉以刷新”功能。 有关详细信息,请参阅下拉以刷新。 |
|
上下文菜单项 | ContextActions |
可通过将 SwipeView 设置为 DataTemplate 中的根视图来支持上下文菜单项,该视图定义了 CollectionView 中每个数据项的外观。 有关详细信息,请参阅上下文菜单。 |
滚动 | ScrollTo() |
CollectionView 定义将项滚动到视图中的 ScrollTo 方法。 有关详细信息,请参阅滚动。 |