Risposte:
A ListView
è fondamentalmente come un ListBox
(ed eredita da esso), ma ha anche una View
proprietà. 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: è Single
per a ListBox
, ma Extended
per aListView
Un ListView
consentono di definire un insieme di views
per esso e ti dà un modo nativo ( WPF
binding
supporto) per controllare la visualizzazione di ListView
utilizzare 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
/ItemTemplate
ofListBox
.
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.