Risposte:
A ListViewè fondamentalmente come un ListBox(ed eredita da esso), ma ha anche una Viewproprietà. Questa proprietà consente di specificare un modo predefinito di visualizzare gli articoli. L'unica vista predefinita nel BCL ( Base Class Library ) è GridView, ma puoi facilmente crearne una tua .
Un'altra differenza è la modalità di selezione predefinita: è Singleper a ListBox, ma Extendedper aListView
Un ListViewconsentono di definire un insieme di viewsper esso e ti dà un modo nativo ( WPF bindingsupporto) per controllare la visualizzazione di ListViewutilizzare sia definito views.
Esempio:
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;
}
PRODUZIONE:
Vista normale: vista 2 in alto XAML
MouseOver View: Visualizza 1 in alto XAML
Se provi a ottenere sopra in a
ListBox, probabilmente finirai per scrivere molto più codice perControlTempalate/ItemTemplateofListBox.
Listview deriva dal controllo listbox. Una differenza più importante è la visualizzazione elenco utilizza la modalità di selezione estesa per impostazione predefinita. listview aggiunge anche una proprietà chiamata view che consente di personalizzare la visualizzazione in modo più ricco rispetto a un pannello di elementi personalizzato. Un esempio di vita reale di listview con gridview è la vista dei dettagli di Esplora file. Listview con visualizzazione griglia è una griglia dati meno potente. Dopo l'introduzione del controllo datagrid listview ha perso la sua importanza.