首页 > 其他分享 >ItemsControl和ListView、ListBox的区别

ItemsControl和ListView、ListBox的区别

时间:2024-03-08 09:12:42浏览次数:35  
标签:子类 ItemsControl 源码 ListBox ListView ViewBase

1、ItemsControl用来显示一个数据项的集合,它的底层是一个列表,它可以非常灵活的展示布局和数据
以下是例子

<ItemsControl ItemsSource="{Binding Student}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
		    <TextBlock Text="{Binding Id}" />
			<TextBlock Text="{Binding Name}" />
			<TextBlock Text="{Binding Age}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
</ItemsControl>

2、ListBox是ItemsControl的子类,所以看源码
image
它多了选择,查找,取消的功能,
用法

<ListBox
  Width="180"
  HorizontalAlignment="Center"
  Background="Honeydew"
  ItemsSource="{Binding Source={StaticResource HeaderList}}" />

3、ListView是最新出来的,它是ListBox的子类,看源码
image
而ListView里面多了ViewBase
image
ViewBase的父类是DependencyObject
所以,对于每一项的绘制,排序,分组都可以设置不同的类型,更加的灵活。
用法

 <ListView
   Width="180"
   HorizontalAlignment="Center"
   Background="Honeydew"
   ItemsSource="{Binding Source={StaticResource HeaderList}}" />

标签:子类,ItemsControl,源码,ListBox,ListView,ViewBase
From: https://www.cnblogs.com/guchen33/p/18060234

相关文章

  • (21)Lazarus之FilterComboBox1过滤ShellListView1的文件名
    FilterComboBox1只过滤当前目录下的文件名,不过滤目录名,也不过滤子目录名拖一个FilterComboBox1,ShellListView1到界面上1]将FilterComboBox1的ShellListView设置为ShellListView12]添加过滤文件类型 3]还须设置ShellListView1的根目录Root ......
  • lazarus在银河麒麟国产操作系统linux下,使用TListView 使用图标样式 BUG完善
    lazarus在银河麒麟国产操作系统linux下,使用TListView使用TListViewvsIcon样式,文本长了会是这样效果尝试设置OwnerDraw属性为True自己定义方法DrawItem不起效果也尝试修改TCustomListView源代码也不起效果,搞了半天,后发现坑了,没仔细看帮助WhensettoTrue,theOn......
  • (20) Lazarus学习之ListFilterEdit1过滤ListBox1数据
     Delphi我写的类似功能带历史记忆,并模糊带出功能的Edit 先在ListBox1的Items里添加数据 再拖一个ListFilterEdit1要界面上,设置它的 即可看到过滤效果 同样适合CheckListBox1 ......
  • (10)Lazarus下ListBox自画
    参考:VCL下ListBox自画,Lazarus也一样usesLCLType; ListBox的两个设置:自画事件:ListBox1DrawItemprocedureTForm1.ListBox1DrawItem(Control:TWinControl;Index:Integer;ARect:TRect;State:TOwnerDrawState);beginWithListBox1.CanvasDoBeginBrus......
  • CheckListbox 勾选操作随笔
    记录代码备用, 增加CheckListbox勾选全选项代码//------------------获取全选项值-----------------------------if(checkedListBox1.SelectedIndex==0){for(inti=1;i<checkedListBox1.Items.Count;i++){ch......
  • Android的ListView分页功能(上滑加载更多)
    Android的ListView分页功能(上滑加载更多)首先要定义一个footer.xml作为进度条和提示加载中的底部布局,代码如下:<LinearLayoutandroid:id="@+id/load_layout"android:layout_width="match_parent"android:layout_height="wrap_content"......
  • (10)Lazarus下ListBox自画
    参考:VCL下ListBox自画,Lazarus也一样usesLCLType; ListBox的两个设置:自画事件:ListBox1DrawItemprocedureTForm1.ListBox1DrawItem(Control:TWinControl;Index:Integer;ARect:TRect;State:TOwnerDrawState);beginWithListBox1.CanvasDo......
  • WPF,ListView鼠标上下滚动方式修改
    问题:ListView在鼠标上下滚动的时候,是按照一个一个Item的高度来滚动的,有办法取消掉这样子的滚动方式吗解决方式:可以通过将ListView的ScrollViewer.CanContentScroll属性设置为False来取消掉逐个项滚动的方式。这将会启用平滑滚动,而不是基于项的高度进行滚动示例代码如下:<......
  • WPF,ListView中的Item自定义靠左还是靠右
    Item中有属性来决定是左还是右,难点在于如何将ItemTemplate扩充占满整个宽度,这样子当界面缩放的时候,Item靠左或靠右也能随着移动,其实主要是下面的代码,设置ListViewItem的HorizontalContentAlignment属性为Stretch,铺满整个宽度,示例代码如下:<ListViewx:Name="LvmqttMsg"Ba......
  • delphi firemonkey使用 TListView 自定义列表数据
    设计界面如下把ListView的Item的Appearance为DynamicAppearance,并且把Item改为高度100添加Item代码procedureTForm1.Button1Click(Sender:TObject);varimg:TListItemImage;text1,text2,text3:TListItemText;beginvaritem:=ListView1.Items.Add;text......