Поделиться через


Общие сведения об элементе управления ListView

Обновлен: Ноябрь 2007

Элемент управления ListView предоставляет инфраструктуру для отображения набора элементов данных в различных макетах или представлениях. Например, у пользователя может возникнуть потребность в отображении элементов данных в таблице, а также в сортировке ее столбцов.

В этом разделе содержатся следующие подразделы.

  • Понятие об элементе управления ListView
  • Определение режима представления для элемента управления ListView
  • Привязка данных к элементу управления ListView
  • Применение стилей к ListView, реализующему GridView
  • Совместное использование одного режима представления
  • Создание настраиваемого режима представления
  • Связанные разделы

Понятие об элементе управления ListView

Элемент управления ListView является ItemsControl, который является производным от ListBox. Как правило, его элементы являются членами коллекции данных и представляются как объекты ListViewItem. ListViewItem является ContentControl и может содержать только один дочерний элемент. Однако дочерним элементом может быть любой визуальный элемент.

Определение режима представления для элемента управления ListView

Чтобы задать режим просмотра содержимого элемента управления ListView, необходимо задать значение свойства View. Одним из режимов, предоставляемых Windows Presentation Foundation (WPF), является GridView, отображающий коллекцию элементов данных в таблице с настраиваемыми столбцами.

В следующем примере показано определение GridView для элемента управления ListView, в котором отображаются сведения о сотруднике. Полный пример см. в разделе Пример с объектом ListView, использующим объект GridView.

<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>

На следующем рисунке показано, как будут отображаться данные для предыдущего примера.

ListView с выводом GridView

Можно создать пользовательский режим представления путем определения класса, наследуемого от класса ViewBase. Класс ViewBase предоставляет инфраструктуру, которая необходима для создания пользовательского режима представления. Дополнительные сведения о создании пользовательского представления см. в разделе Практическое руководство. Создание пользовательского режима представления для ListView.

Привязка данных к элементу управления ListView

Используйте свойства Items и ItemsSource, чтобы указать элементы для элемента управления ListView. В следующем примере свойству ItemsSource присваивается значение коллекции данных, которая называется EmployeeInfoDataSource. Полный пример см. в разделе Пример с объектом ListView, использующим объект GridView.

<ListView ItemsSource="{Binding Source=
                       {StaticResource EmployeeInfoDataSource}}">

В GridView объекты GridViewColumn привязаны к заданным полям данных. В следующем примере объект GridViewColumn привязывается к полю данных путем указания Binding для свойства DisplayMemberBinding. Полный пример см. в разделе Пример с объектом ListView, использующим объект GridView.

GridViewColumn gvc1 = 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, так как это переопределяет привязку, заданную DataTemplate. Полный пример см. в разделе Пример ListView, использующего GridView с шаблонами.

<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"
      HeaderContainerStyle="{StaticResource myHeaderStyle}"
      HeaderTemplate="{StaticResource myHeaderTemplate}"
      DisplayMemberBinding="{Binding Path=Month}"/>

Применение стилей к ListView, реализующему GridView

Элемент управления ListView содержит объекты ListViewItem, представляющие отображаемые элементы данных. Можно использовать следующие свойства для определения содержимого и стиля элементов данных:

Чтобы избежать проблем выравнивания между ячейками в GridView, не используйте ItemContainerStyle для задания свойств или добавление содержимого, которое влияет на ширину элемента в ListView. Например, может возникнуть проблема выравнивания при задании свойства Margin в ItemContainerStyle. Чтобы задать свойства или определить содержимое, которое влияет на ширину элементов в GridView, используйте свойства класса GridView и его связанных классов, таких как GridViewColumn.

Дополнительные сведения о том, как использовать GridView и его вспомогательные классы, см. в разделе Общие сведения о GridView.

Если определить ItemContainerStyle для элемента управления ListView и также определить ItemTemplate, необходимо включить ContentPresenter в стиль для правильной работы ItemTemplate.

Не используйте свойства HorizontalContentAlignment и VerticalContentAlignment для содержимого ListView, которое отображается с помощью GridView. Чтобы задать выравнивание содержимого в столбце GridView, определите свойство CellTemplate.

Совместное использование одного режима представления

Два элемента управления ListView не могут совместно использовать один режим в одно и то же время. При попытке использования одного режима более, чем одним элементом управления ListView возникает исключение.

Чтобы указать режим представления, который может одновременно использоваться более, чем одним ListView, используйте шаблоны или стили. Пример определения представлений как Resources см. в разделе Пример использования элемента управления ListView с несколькими режимами отображения.

Создание настраиваемого режима представления

Настраиваемые представления, такие как GridView, являются производными от абстрактного класса ViewBase, который предоставляет средства для отображения элементов данных, представленных как объекты ListViewItem.

Пример настраиваемого режима представления см. в разделе Пример использования элемента управления ListView с несколькими режимами отображения.

См. также

Основные понятия

Общие сведения о GridView

Оптимизация производительности: элементы управления

Ссылки

GridView

ListView

ListViewItem

Binding

Другие ресурсы

Практические руководства, посвященные ListView

Примеры использования ListView