What is The difference between ListBox and ListView
WPF的ListBox和ListView有什么区别? 我找不到它们的属性有任何显着差异。 有不同的典型用法吗?
另一个区别是默认选择模式:
例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | <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> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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; } |
输出:
普通视图:
MouseOver视图:
If you try to achieve above in a
ListBox , probably you'll end up writing a lot more code forControlTempalate /ItemTemplate ofListBox .
Listview从列表框控件派生。
最重要的区别是listview默认使用扩展选择模式。 listview还添加了一个名为view的属性,该属性使您能够以比自定义项目面板更丰富的方式自定义视图。
带有gridview的listview的一个现实示例是文件浏览器的详细信息视图。
具有网格视图的Listview是功能较弱的数据网格。
引入数据网格控件后,listview失去了重要性。