WPF的ListBox和ListView有什么区别?我发现他们的属性没有任何显着差异。有不同的典型用途吗?
答案 0 :(得分:196)
ListView
基本上类似于ListBox
(并从中继承),但它也有View
属性。此属性允许您指定显示项目的预定义方式。 BCL中唯一预定义的视图(Base Class Library)为GridView
,但您可以轻松create your own。
另一个区别是默认选择模式:Single
为ListBox
,Extended
为ListView
答案 1 :(得分:25)
ListView
允许您为其定义一组views
,并为您提供原生方式(WPF
binding
支持)来控制ListView
的显示通过使用定义的views
。
<强> 实施例 强>
<强> 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;
}
<强> 输出: 强>
普通视图:上方{2}中的{2}
MouseOver查看:查看以上XAML
如果您尝试在
XAML
中实现上述目标,可能最终会为ListBox
/ControlTempalate
{{1}编写更多代码}} 强>
答案 2 :(得分:6)
Listview派生自列表框控件。 一个最重要的区别是listview默认使用扩展选择模式。 listview还添加了一个名为view的属性,使您可以以比自定义itemspanel更丰富的方式自定义视图。 使用gridview的listview的一个真实例子是文件资源管理器的详细信息视图。 带有网格视图的Listview是一个功能较弱的数据网格。 引入datagrid后,listview失去了它的重要性。