Apa perbedaan antara ListBox WPF dan ListView? Saya tidak dapat menemukan perbedaan yang signifikan di properti mereka. Apakah ada perbedaan penggunaan tipikal?
sumber
Apa perbedaan antara ListBox WPF dan ListView? Saya tidak dapat menemukan perbedaan yang signifikan di properti mereka. Apakah ada perbedaan penggunaan tipikal?
A ListView
pada dasarnya seperti ListBox
(dan mewarisi darinya), tetapi juga memiliki View
properti. Properti ini memungkinkan Anda menentukan cara yang telah ditentukan untuk menampilkan item. Satu-satunya tampilan yang telah ditentukan di BCL ( Base Class Library ) adalah GridView
, tetapi Anda dapat dengan mudah membuatnya sendiri .
Perbedaan lainnya adalah mode pemilihan default: itu Single
untuk ListBox
, tetapi Extended
untuk aListView
A ListView
membiarkan Anda menentukan satu set views
untuk itu dan memberi Anda cara asli ( WPF
binding
dukungan) untuk mengontrol tampilan ListView
dengan menggunakan yang ditentukan views
.
Contoh:
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;
}
KELUARAN:
Tampilan Normal: Lihat 2 di atas XAML
MouseOver View: Lihat 1 di atas XAML
Jika Anda mencoba mencapai di atas dalam
ListBox
, mungkin Anda akan berakhir dengan menulis lebih banyak kode untukControlTempalate
/ItemTemplate
dariListBox
.
Listview berasal dari kontrol listbox. Satu perbedaan yang paling penting adalah listview menggunakan mode pemilihan diperluas secara default. listview juga menambahkan properti yang disebut tampilan yang memungkinkan Anda untuk menyesuaikan tampilan dengan cara yang lebih kaya daripada panel item kustom. Salah satu contoh kehidupan nyata dari listview dengan gridview adalah tampilan detail file explorer. Listview dengan tampilan kisi adalah kisi data yang kurang kuat. Setelah pengenalan daftar kontrol datagrid kehilangan pentingnya.
sumber