Відповіді:
A ListView
в основному схожий на ListBox
(і успадковується від нього), але він також має View
властивість. Ця властивість дозволяє вказати заздалегідь заданий спосіб відображення елементів. Єдиний заздалегідь заданий вигляд у BCL ( Бібліотека базових класів ) GridView
, але ви можете легко створити свій власний .
Ще одна відмінність полягає у режимі вибору за замовчуванням: це Single
для a ListBox
, але Extended
для aListView
ListView
Дозволяють визначити набір views
для нього і дає нативний спосіб ( WPF
binding
підтримки) для управління відображенням ListView
за допомогою визначається views
.
Приклад:
XAML
<ListView ItemsSource="{Binding list}" Name="listv" MouseEnter="listv_MouseEnter" MouseLeave="listv_MouseLeave">
<ListView.Resources>
<GridView x:Key="one">
<GridViewColumn Header="ID" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding id}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="Name" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
<GridView x:Key="two">
<GridViewColumn Header="Name" >
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding name}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.Resources>
<ListView.Style>
<Style TargetType="ListView">
<Style.Triggers>
<DataTrigger Binding="{Binding ViewType}" Value="1">
<Setter Property="View" Value="{StaticResource one}" />
</DataTrigger>
</Style.Triggers>
<Setter Property="View" Value="{StaticResource two}" />
</Style>
</ListView.Style>
Code Behind:
private int viewType;
public int ViewType
{
get { return viewType; }
set
{
viewType = value;
UpdateProperty("ViewType");
}
}
private void listv_MouseEnter(object sender, MouseEventArgs e)
{
ViewType = 1;
}
private void listv_MouseLeave(object sender, MouseEventArgs e)
{
ViewType = 2;
}
ВИХІД:
Нормальний вигляд: перегляд 2 вище XAML
Перегляд миші: Перегляд 1 вище XAML
Якщо ви спробуєте досягти вище в
ListBox
, можливо, ви в кінцевому підсумку пишете набагато більше коду дляControlTempalate
/ItemTemplate
зListBox
.
Listview виходить з управління списком. Однією з найважливіших відмінностей є перегляд списку, який використовує розширений режим вибору за умовчанням. listview також додає властивість під назвою view, яка дозволяє вам налаштувати подання багатшим способом, ніж спеціальна панель елементів. Одним із реальних прикладів перегляду списків із переглядом сітки є перегляд деталей провідника файлів. Listview з сіткою - це менш потужна сітка даних. Після введення Datagrid управління listview втратило своє значення.