TOC

This article is currently in the process of being translated into Russian (~91% done).

The ListView control:

A simple ListView example

В своей простейшей форме элемент управления WPF ListView минимален содержательно. Действительно, он выглядит целиком, как WPF ListBox, пока ты не начинаешь добавлять к нему специализированные представления (views). И это не удивительно, поскольку 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), включающие в себя только текст. На выходе получаем элемент 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).

Итог

Как видите, ListView легко создать вручную через XAML. Но в большинстве случаев ListView используется для отображения данных из какого-либо источника во время выполнения. В следующей главе мы покажем, как это сделать.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!