Réponses:
A ListViewest fondamentalement comme un ListBox(et en hérite), mais il a aussi une Viewpropriété. Cette propriété vous permet de spécifier une manière prédéfinie d'afficher les éléments. La seule vue prédéfinie de la BCL ( Base Class Library ) est GridView, mais vous pouvez facilement créer la vôtre .
Une autre différence est le mode de sélection par défaut: c'est Singlepour un ListBox, mais Extendedpour unListView
Un ListViewvous permet de définir un ensemble de viewspour cela et vous donne un moyen natif ( WPF bindingsupport) de contrôler l'affichage ListViewen utilisant défini views.
Exemple:
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;
}
PRODUCTION:
Vue normale: vue 2 ci-dessus XAML
Vue MouseOver: Voir 1 ci-dessus XAML
Si vous essayez d'atteindre ci-dessus dans un
ListBox, vous finirez probablement par écrire beaucoup plus de code pourControlTempalate/ItemTemplateofListBox.
Listview dérive du contrôle de listbox. Une différence la plus importante est que listview utilise le mode de sélection étendu par défaut. listview ajoute également une propriété appelée vue qui vous permet de personnaliser la vue d'une manière plus riche qu'un panneau d'éléments personnalisé. Un exemple réel de listview avec gridview est la vue détaillée de l'explorateur de fichiers. Listview with grid view est une grille de données moins puissante. Après l'introduction du contrôle de liste de données, listview a perdu de son importance.