WPF's ListBox ve ListView arasındaki fark nedir? Özelliklerinde önemli bir fark bulamıyorum. Farklı tipik kullanım var mı?
WPF's ListBox ve ListView arasındaki fark nedir? Özelliklerinde önemli bir fark bulamıyorum. Farklı tipik kullanım var mı?
Yanıtlar:
A ListView
temelde bir ListBox
(ve ondan miras) gibidir, ama aynı zamanda bir View
özelliği vardır. Bu özellik, öğeleri görüntülemek için önceden tanımlanmış bir yol belirtmenize olanak tanır. BCL'de ( Temel Sınıf Kütüphanesi ) önceden tanımlanmış tek görünüm GridView
, ancak kendi görünümünüzü kolayca oluşturabilirsiniz .
Bir başka fark Varsayılan seçim modu: bu kadar Single
bir için ListBox
, ama Extended
bir içinListView
Bunun için ListView
bir set tanımlamanıza views
ve tanımlı WPF
binding
görüntüyü ListView
kullanarak görüntüyü kontrol etmeniz için size yerel bir yol ( destek) verir views
.
Misal:
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;
}
ÇIKTI:
Normal Görünüm: Yukarıdaki 2'yi görüntüle XAML
MouseOver Görünümü: Yukarıdaki 1'i görüntüle XAML
Yukarıda a'ya ulaşmaya çalışırsanız
ListBox
, muhtemelenControlTempalate
/ItemTemplate
of için çok daha fazla kod yazacaksınızListBox
.
Liste görünümü, liste kutusu denetiminden türetilir. En önemli farklardan biri liste görünümünde varsayılan olarak genişletilmiş seçim modunun kullanılmasıdır. listview ayrıca, görünümü özel bir öğe panelinden daha zengin bir şekilde özelleştirmenizi sağlayan görünüm adı verilen bir özellik ekler. Gridview ile listview uygulamasının gerçek bir örneği, dosya kaşifinin ayrıntılar görünümüdür. Izgara görünümü ile liste görünümü daha az güçlü bir veri ızgarasıdır. Datagrid kontrol liste görünümünden sonra önemini kaybetti.