WPF的ListBox和ListView有什么区别?我没有发现它们的性质有什么显著差异。有不同的典型用途吗?
当前回答
Listview派生自listbox控件。 一个最重要的区别是listview默认使用扩展选择模式。Listview还添加了一个名为view的属性,它使您能够以比自定义itemspanel更丰富的方式自定义视图。 listview和gridview的一个真实例子是文件资源管理器的详细信息视图。 带有网格视图的Listview是一个功能不太强大的数据网格。 在引入数据网格之后,列表视图失去了它的重要性。
其他回答
Listview派生自listbox控件。 一个最重要的区别是listview默认使用扩展选择模式。Listview还添加了一个名为view的属性,它使您能够以比自定义itemspanel更丰富的方式自定义视图。 listview和gridview的一个真实例子是文件资源管理器的详细信息视图。 带有网格视图的Listview是一个功能不太强大的数据网格。 在引入数据网格之后,列表视图失去了它的重要性。
ListView允许您为其定义一组视图,并提供了一种本地方式(WPF绑定支持)来使用已定义的视图来控制ListView的显示。
例子:
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>
背后的代码:
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;
}
输出:
普通视图:上面XAML中的视图2
鼠标悬停视图:上面XAML中的视图1
如果你试图在ListBox中实现上述目标,可能你最终会为ListBox的controltempalate /ItemTemplate编写更多的代码。
ListView基本上类似于ListBox(并继承自它),但它也有一个View属性。此属性允许您指定一种预定义的显示项的方式。BCL(基类库)中唯一预定义的视图是GridView,但是您可以轻松地创建自己的视图。
另一个区别是默认的选择模式:对于ListBox是Single,但是对于ListView是Extended
推荐文章
- ListBox和ListView的区别是什么
- 关于。net中api破坏变化的权威指南
- MVVM:从开始到结束的教程?
- 任务有什么用。FromResult< result >
- c#中比较数组的最简单方法
- 我如何创建目录,如果它不存在,以创建文件?
- 我如何分割一个字符串由一个多字符分隔符在c# ?
- 按类型查找WPF窗口中的所有控件
- 数组与列表的性能
- 从Description属性中获取Enum
- 为什么使用try {} finally{}和一个空的try块?
- 如何在内存中获取对象大小?
- 每个优秀的。net开发人员都应该能够回答的问题?
- 如何编辑。csproj文件
- EscapeUriString和EscapeDataString的区别是什么?