-
ListView控制项:

一个简单的ListView示例

WPF ListView控件是最简单的形式。事实上,它看起来很像WPF ListBox,直到你开始添加专门的视图。这并不奇怪,因为ListView直接从ListBox控件继承。因此,默认的ListView实际上只是一个ListBox,具有不同的选择模式(稍后将详细介绍)。

让我们尝试以最简单的形式创建ListView:

<Window x:Class="WpfTutorialSamples.ListView_control.ListViewBasicSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ListViewBasicSample" Height="200" Width="200">
    <Grid>
		<ListView Margin="10">
			<ListViewItem>A ListView</ListViewItem>
			<ListViewItem IsSelected="True">with several</ListViewItem>
			<ListViewItem>items</ListViewItem>
		</ListView>
	</Grid>
</Window>

这非常简单,使用手动指定的ListViewItem来填充列表,只有一个文本标签代表每个项目 - 一个最低限度的WPF ListView控件。

有图片的ListViewItem

由于WPF的无外观特性,为ListViewItem指定图像不仅仅是为图像ID或键指定属性。相反,您可以完全控制它并指定在ListViewItem中呈现图像和文本所需的控件。这是一个例子:

<Window x:Class="WpfTutorialSamples.ListView_control.ListViewBasicSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="ListViewBasicSample" Height="200" Width="200">
    <Grid>
		<ListView Margin="10">
			<ListViewItem>
				<StackPanel Orientation="Horizontal">
					<Image Source="/WpfTutorialSamples;component/Images/bullet_green.png" Margin="0,0,5,0" />
					<TextBlock>Green</TextBlock>
				</StackPanel>
			</ListViewItem>
			<ListViewItem>
				<StackPanel Orientation="Horizontal">
					<Image Source="/WpfTutorialSamples;component/Images/bullet_blue.png" Margin="0,0,5,0" />
					<TextBlock>Blue</TextBlock>
				</StackPanel>
			</ListViewItem>
			<ListViewItem IsSelected="True">
				<StackPanel Orientation="Horizontal">
					<Image Source="/WpfTutorialSamples;component/Images/bullet_red.png" Margin="0,0,5,0" />
					<TextBlock>Red</TextBlock>
				</StackPanel>
			</ListViewItem>
		</ListView>
	</Grid>
</Window>

我们在这里做的很简单。因为ListViewItem派生自ContentControl类,所以我们可以指定WPF控件作为其内容。在这种情况下,我们使用StackPanel,它有一个Image和一个TextBlock作为它的子控件。

小结

如您所见,在XAML中手动构建ListView非常简单,但在大多数情况下,ListView数据将来自某种数据源,应在运行时在ListView中呈现。我们将在下一章中研究这样做。