Ras*_*sto 185 .net wpf wpf-controls
WPF的ListBox和ListView有什么区别?我发现他们的属性没有任何显着差异.有不同的典型用途吗?
Kyl*_*Ren 28
A 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>
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
普通视图:上面的视图2 XAML
MouseOver视图:上面的视图1 XAML
如果您尝试了上述的实现
ListBox,很可能到头来你会写很多代码ControlTempalate/ItemTemplate的ListBox.
小智 7
Listview从列表框控件派生。最重要的区别是listview默认使用扩展选择模式。listview还添加了一个名为view的属性,通过该属性,您可以以比自定义项目面板更丰富的方式自定义视图。带有gridview的listview的一个现实示例是文件浏览器的详细信息视图。具有网格视图的Listview是功能较弱的数据网格。引入数据网格控件后,listview失去了重要性。
| 归档时间: |
|
| 查看次数: |
120750 次 |
| 最近记录: |