Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Элемент ListView управления предоставляет инфраструктуру для отображения набора элементов данных с помощью другого макета или представления. Например, может потребоваться отобразить элементы данных в таблице, а также отсортировать его столбцы.
Производный ListView от ListBox. Как правило, его элементы являются членами коллекции данных и представляются как ListViewItem объекты. A ListViewItem — это ContentControl и может содержать только один дочерний элемент. Однако этот дочерний элемент может быть любым визуальным элементом.
Замечание
Типы, на которые ссылается эта статья, доступны в разделе справочника по коду .
В следующей таблице перечислены распространенные задачи для работы с элементом управления ListView:
| Название | Description |
|---|---|
| Сортировка столбца GridView при нажатии на заголовок | Узнайте, как сортировать столбец GridView при щелчке заголовка. |
| Создание пользовательского режима представления для ListView | Узнайте, как создать настраиваемый режим представления для ListView. |
| Шаблоны для оформления ListView с использованием GridView | Узнайте, как использовать шаблоны для стиля ListView, использующего GridView. |
| Создание стиля для заголовка перетаскиваемого столбца GridView | Узнайте, как создать стиль для перетаскиваемого заголовка столбца GridView. |
| Отображение содержимого ListView с помощью GridView | Узнайте, как отобразить содержимое ListView с помощью GridView. |
| Использование триггеров для стиля выбранных элементов в ListView | Узнайте, как использовать триггеры для стиля выбранных элементов в ListView. |
| Создание ListViewItems с помощью флажка | Узнайте, как создать ListViewItems с помощью checkBox. |
| Отображение данных с помощью GridViewRowPresenter | Узнайте, как отображать данные с помощью GridViewRowPresenter. |
| Группируйте элементы в ListView, реализующем GridView | Узнайте, как группировать элементы в ListView, который использует GridView. |
| Стиль строки в ListView, реализующей GridView | Узнайте, как стилизовать строку в ListView, реализующем GridView. |
| Изменение горизонтального выравнивания столбца в ListView | Узнайте, как изменить горизонтальное выравнивание столбца в ListView. |
| Обработка события MouseDoubleClick для каждого элемента в ListView | Узнайте, как обрабатывать событие MouseDoubleClick для каждого элемента в ListView. |
Стили и шаблоны
Вы можете изменить значение по умолчанию ControlTemplate , чтобы предоставить элементу управления уникальный внешний вид. Дополнительные сведения см. в статье "Что такое стили и шаблоны?", а также как создать шаблон для элемента управления.
Свойство контента
Элемент ListView управления использует Items свойство в качестве свойства содержимого. Это свойство позволяет указать элементы, отображаемые в элементе управления.
Комплектующие
Элемент ListView управления не определяет именованные части шаблона.
При создании ControlTemplate для ListView ваш шаблон может содержать ItemsPresenter внутри ScrollViewer. Отображает ItemsPresenter каждый элемент в ListViewэлементе управления; ScrollViewer включает прокрутку в элементе управления.
ItemsPresenter не является прямым дочерним элементом ScrollViewer, необходимо указать имя для ItemsPresenter как ItemsPresenter.
Визуальные состояния
В следующей ListView таблице перечислены визуальные состояния элемента управления.
| Имя VisualState | Имя VisualStateGroup | Description |
|---|---|---|
| Действительный | ValidationStates | Элемент управления действителен и не имеет ошибок проверки. |
| НедействительныйФокус | ValidationStates | Элемент управления имеет ошибку проверки и находится в фокусе клавиатуры. |
| НедействительныйНефокусированный | ValidationStates | Элемент управления имеет ошибку проверки, но не имеет фокуса клавиатуры. |
В следующей ListViewItem таблице перечислены состояния элемента управления.
| Имя VisualState | Имя VisualStateGroup | Description |
|---|---|---|
| Обычная | CommonStates | Состояние по умолчанию. |
| Disabled | CommonStates | Элемент управления отключен. |
| Наведение курсора | CommonStates | Указатель мыши находится на элементе управления. |
| Focused | FocusStates | Элемент управления имеет фокус клавиатуры. |
| Нецеленаправленных | FocusStates | Элемент управления не имеет фокуса клавиатуры. |
| Выбрано | SelectionStates | Элемент в данный момент выбран. |
| Не выбрано | SelectionStates | Элемент не выбран. |
| ВыбранныйНеактивный | SelectionStates | Элемент выбран, но не имеет фокуса клавиатуры. |
| Действительный | ValidationStates | Элемент управления действителен и не имеет ошибок проверки. |
| НедействительныйФокус | ValidationStates | Элемент управления имеет ошибку проверки и находится в фокусе клавиатуры. |
| НедействительныйНефокусированный | ValidationStates | Элемент управления имеет ошибку проверки, но не имеет фокуса клавиатуры. |
Режимы просмотра
Чтобы указать режим представления для содержимого ListView элемента управления, задайте View свойство. Один из режимов представления, который предоставляет Windows Presentation Foundation (WPF), это GridView, который отображает коллекцию элементов данных в таблице с настраиваемыми столбцами.
В следующем примере показано, как определить GridView для элемента управления ListView, который отображает сведения о сотрудниках.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
<ListView.View>
<GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information">
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}" Width="100">
<GridViewColumnHeader>Last Name
<GridViewColumnHeader.ContextMenu>
<ContextMenu MenuItem.Click="LastNameCM_Click" Name="LastNameCM">
<MenuItem Header="Ascending" />
<MenuItem Header="Descending" />
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=EmployeeNumber}" Header="Employee No." Width="100"/>
</GridView>
</ListView.View>
</ListView>
Можно создать пользовательский режим представления, определив класс, наследуемый от ViewBase класса. Класс ViewBase предоставляет инфраструктуру, необходимую для создания пользовательского представления. Дополнительные сведения о создании пользовательского представления см. в разделе "Создание пользовательского режима представления" для ListView.
Режимы отображения для общего доступа
Два ListView элемента управления не могут совместно использовать один режим просмотра одновременно. При попытке использовать один и тот же режим представления с несколькими ListView элементами управления возникает исключение. Для указания режима, который может одновременно использоваться более чем одним ListView, используйте шаблоны или стили.
Привязка данных
Используйте свойства Items и ItemsSource, чтобы указать элементы для элемента управления ListView. В следующем примере свойству ItemsSource присваивается коллекция данных с именем EmployeeInfoDataSource.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
В объекте GridView, GridViewColumn объекты привязываются к указанным полям данных. В следующем примере GridViewColumn объект привязывается к полю данных с указанием свойства Binding для DisplayMemberBinding.
GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
Dim gvc1 As New GridViewColumn()
gvc1.DisplayMemberBinding = New Binding("FirstName")
gvc1.Header = "FirstName"
gvc1.Width = 100
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
Можно также указать Binding как часть DataTemplate определения, которое используется для стиля ячеек в столбце. В следующем примере DataTemplate, идентифицированный с помощью ResourceKey, устанавливает Binding для GridViewColumn. Обратите внимание, что в этом примере DisplayMemberBinding не определяется, так как это действие имеет приоритет над CellTemplate.
<DataTemplate x:Key="myCellTemplateMonth">
<DockPanel>
<TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
<TextBlock.Text>
<Binding Path="Month"/>
</TextBlock.Text>
</TextBlock>
</DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
CellTemplate="{StaticResource myCellTemplateMonth}"/>
Стилизация элементов управления ListView
Элемент ListView управления содержит ListViewItem объекты, представляющие отображаемые элементы данных. Для определения содержимого и стиля элементов данных можно использовать следующие свойства:
- В элементе управления ListView используйте свойства ItemTemplate, ItemTemplateSelector и ItemContainerStyle.
- В элементе ListViewItem контроля используйте свойства ContentTemplate и ContentTemplateSelector.
Чтобы избежать проблем выравнивания между ячейками в GridView, не используйте ItemContainerStyle для задания свойств или добавления содержимого, влияющего на ширину элемента в ListView. Например, проблема выравнивания может возникать при установке свойства Margin в ItemContainerStyle. Чтобы указать свойства или определить содержимое, которое влияет на ширину элементов в объекте GridView, используйте свойства GridView класса и связанные с ним классы, например GridViewColumn. Дополнительные сведения об использовании GridView и его вспомогательных классах см. в обзоре GridView.
Если вы определяете ItemContainerStyle для управления ListView и также определяете ItemTemplate, необходимо включить ContentPresenter в стиль, чтобы ItemTemplate работал правильно.
Не используйте свойства HorizontalContentAlignment и VerticalContentAlignment для содержимого ListView, отображаемого GridView. Чтобы указать выравнивание содержимого в столбце элемента GridView, определите объект CellTemplate.
Справочник по коду
На следующие объекты ссылаются в этой статье:
EmployeeInfoDataSourceсбор данных. Если вы используете Visual Basic .NET, элементWindowобъявляется немного иначе, чем это показано в примере кода:<Window x:Class="SDKSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="OnLoad" xmlns:ds="clr-namespace:SDKSample"> <Window.Resources> <ObjectDataProvider x:Key="EmployeeInfoDataSource" ObjectType="{x:Type ds:myEmployees}" /> </Window.Resources>EmployeeInfoкласс, который используется в качестве типа дляEmployeeInfoDataSourceсбора данных.public class EmployeeInfo { private string _firstName; private string _lastName; private string _employeeNumber; public string FirstName { get {return _firstName;} set {_firstName = value;} } public string LastName { get {return _lastName;} set {_lastName = value;} } public string EmployeeNumber { get {return _employeeNumber;} set {_employeeNumber = value;} } public EmployeeInfo(string firstname, string lastname, string empnumber) { _firstName = firstname; _lastName = lastname; _employeeNumber = empnumber; } }Public Class EmployeeInfo Private _firstName As String Private _lastName As String Private _employeeNumber As String Public Property FirstName() As String Get Return _firstName End Get Set(ByVal value As String) _firstName = value End Set End Property Public Property LastName() As String Get Return _lastName End Get Set(ByVal value As String) _lastName = value End Set End Property Public Property EmployeeNumber() As String Get Return _employeeNumber End Get Set(ByVal value As String) _employeeNumber = value End Set End Property Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal empnumber As String) _firstName = firstname _lastName = lastname _employeeNumber = empnumber End Sub End Class
См. также
.NET Desktop feedback