Общие сведения об элементе управления ListView
ListView Управления предоставляет инфраструктуру для отображения набора элементов данных в различных макетах или представлениях. Например, у пользователя может возникнуть необходимость в отображении элементов данных в таблице, а также в сортировке ее столбцов.
Понятие об элементе управления ListView
ListView Элемент управления является ItemsControl , производный от ListBox. Как правило, его элементы являются элементами коллекции данных и представляются в виде ListViewItem объектов. Объект ListViewItem является ContentControl и может содержать только один дочерний элемент. Но дочерним может быть любой визуальный элемент.
Определение режима представления для элемента управления ListView
Чтобы указать режим просмотра содержимого 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
Используйте 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;
<GridViewColumn DisplayMemberBinding=
"{Binding Path=FirstName}"
Header="First Name" Width="100"/>
Можно также указать Binding как часть DataTemplate определение, которое используется для применения стиля к ячейкам столбца. В следующем примере DataTemplate , определяемому с ResourceKey задает Binding для GridViewColumn. Обратите внимание, что в этом примере не определяет DisplayMemberBinding так, как это переопределяет привязку, которая определяется DataTemplate.
<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, который реализует GridView
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.
Совместное использование одного режима представления
Два ListView элементы управления не могут совместно использовать один и тот же режим представления, в то же время. Если вы попытаетесь использовать тот же режим представления с более чем одним ListView управления, возникает исключение.
Чтобы указать режим представления, который может одновременно использоваться более чем одной ListView, используйте шаблоны или стили.
Создание пользовательского режима представления
Настраиваемые представления, такие как GridView являются производными от ViewBase абстрактный класс, который предоставляет средства для отображения элементов данных, которые отображаются в виде ListViewItem объектов.