介绍
ListView是用于显示数据列表的视图,特别是需要滚动的长列表。
它旨在提供更灵活、更高的性能替代方法ListView,但是UWP下现在支持不是很好。
用例
在您要显示可滚动数据列表的任何情况下,都可以使用ListView控件, ListView类支持上下文操作和数据绑定。
ListView控件不应与TableView控件混淆。每当您具有选项或数据的非绑定列表时,TableView控件都是一个更好的选择,因为它允许在XAML中指定预定义的选项。例如,具有大多数预定义选项集的iOS设置应用程序比ListView更适合使用TableView。
ListView类不支持在XAML中定义列表项,您必须使用ItemsSource属性或与ItemTemplate的数据绑定来定义列表中的项。
ListView最适合由单个数据类型组成的集合。此要求是因为列表中的每一行只能使用一种类型的单元格。 TableView控件可以支持多种单元格类型,因此当您需要显示多种数据类型时,它是一个更好的选择。
组件
ListView控件具有许多可用于行使每个平台的本机功能的组件。 这些组件在以下各节中定义。
1、Headers、footers
页眉和页脚组件显示在列表的开头和结尾,与列表数据分开,页眉和页脚可以绑定到与ListView的数据源不同的数据源。
2、Groups
可以对ListView中的数据进行分组,以简化导航,组通常是数据绑定的,以下屏幕截图显示了具有分组数据的ListView:
3、Cells
ListView中的数据项称为单元格,每个单元对应于一行数据,有内置单元供您选择,或者您可以定义自己的自定义单元,内置单元格和自定义单元格都可以在XAML或代码中使用/定义。
- 内置单元格(例如TextCell和ImageCell)对应于本机控件,并且性能特别好。
- TextCell显示文本字符串,还可以显示详细信息文本。详细信息文本以较小的字体显示为第二行,带有强调色。
- ImageCell显示带有文本的图像。 显示为带有左侧图像的TextCell。
- 自定义单元格用于呈现复杂数据。 例如,自定义单元格可用于呈现包括专辑和歌手在内的歌曲列表。
以下屏幕快照显示了具有ImageCell项的ListView:
功能性
ListView类支持多种交互样式。
- Pull-to-refresh允许用户下拉ListView刷新内容。
- Context actions上下文操作允许开发人员在单个列表项上指定自定义操作。 例如,您可以在iOS上实施滑动操作,或者在Android上实施长按操作。
- Selection 选择允许开发人员将功能附加到列表项上的选择和取消选择事件。
以下屏幕截图显示了具有上下文操作的ListView:
数据源
ItemsSource
ListItem使用ItemsSource属性填充数据,该属性可以接受实现IEnumerable的任何集合,填充ListView的最简单方法是使用字符串数组:
<ListView> <ListView.ItemsSource> <x:Array Type="{x:Type x:String}"> <x:String>mono</x:String> <x:String>monodroid</x:String> <x:String>monotouch</x:String> <x:String>monorail</x:String> <x:String>monodevelop</x:String> <x:String>monotone</x:String> <x:String>monopoly</x:String> <x:String>monomodal</x:String> <x:String>mononucleosis</x:String> </x:Array> </ListView.ItemsSource> </ListView>