Was ist der Unterschied zwischen ListBox und ListView von WPF? Ich kann keinen signifikanten Unterschied in ihren Eigenschaften feststellen. Gibt es eine andere typische Verwendung?
quelle
Was ist der Unterschied zwischen ListBox und ListView von WPF? Ich kann keinen signifikanten Unterschied in ihren Eigenschaften feststellen. Gibt es eine andere typische Verwendung?
A ListView
ist im Grunde wie a ListBox
(und erbt davon), hat aber auch eine View
Eigenschaft. Mit dieser Eigenschaft können Sie eine vordefinierte Art der Anzeige der Elemente angeben. Die einzige vordefinierte Ansicht in der BCL ( Base Class Library ) ist GridView
, aber Sie können ganz einfach Ihre eigene erstellen .
Ein weiterer Unterschied ist der Standardauswahlmodus: Es ist Single
für a ListBox
, aber Extended
für aListView
Mit A können ListView
Sie eine Reihe von Elementen definieren views
und auf native Weise ( WPF
binding
Unterstützung) die Anzeige ListView
mithilfe von Defined steuern views
.
Beispiel:
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;
}
AUSGABE:
Normale Ansicht: Ansicht 2 oben XAML
MouseOver-Ansicht: Ansicht 1 oben XAML
Wenn Sie versuchen, oben in a zu erreichen
ListBox
, werden Sie wahrscheinlich viel mehr Code fürControlTempalate
/ItemTemplate
von schreibenListBox
.
Die Listenansicht stammt aus der Listbox-Steuerung. Ein wichtiger Unterschied ist, dass die Listenansicht standardmäßig den erweiterten Auswahlmodus verwendet. listview fügt außerdem eine Eigenschaft namens view hinzu, mit der Sie die Ansicht umfassender anpassen können als mit einem benutzerdefinierten Elementbereich. Ein reales Beispiel für eine Listenansicht mit Rasteransicht ist die Detailansicht des Datei-Explorers. Die Listenansicht mit Rasteransicht ist ein weniger leistungsfähiges Datenraster. Nach der Einführung der Datagrid-Steuerung verlor die Listenansicht an Bedeutung.
quelle