WPF控件ItemsControl、ListBox、ListView、DataGrid、TreeView、TabControl用法及区别

WPF 六大集合容器控件完整对比 WPF 控件 ItemsControl、ListBox、ListView、DataGrid、TreeView、TabControl 详细用法与使用场景及区别. 阅读详情

WPF控件ItemsControl、ListBox、ListView、DataGrid、TreeView、TabControl用法及区别

1.ItemsControl

temsControl是WPF中最基本的控件之一,用于显示一个数据项集合。它允许按照自定义方式呈现任何类型的对象,可以在其中使用不同的布局和面板来展示数据。ItemsControl非常灵活,可以满足各种需求。

以下是一个简单的ItemsControl的XAML示例,它使用StackPanel作为布局容器,并通过DataTemplate指定了如何呈现每个数据项:

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

这段代码假设有一个名为Customers的集合,它包含多个Customer对象,每个对象都有一个Name属性。ItemsControl将此集合绑定到其ItemsSource属性,并使用DataTemplate将每个数据项呈现为一个文本块。此外,我们还使用了一个StackPanel作为ItemsControl的默认面板。

2.ListBox

ListBox是从ItemsControl派生的一个控件,用于显示选择项列表。与ItemsControl相比,ListBox还提供了选择功能,使用户可以从列表中选择一个或多个项。ListBox可以使用DataTemplate来自定义每个项的呈现方式。

以下是一个简单的ListBox的XAML示例,它绑定到一个名为Cities的字符串数组,并使用DataTemplate将每个城市呈现为一个按钮:

<ListBox ItemsSource="{Binding Cities}" SelectionMode="Multiple">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

此代码将一个字符串数组绑定到ListBox的ItemsSource属性上,设置SelectionMode属性为Multiple以启用多选功能。然后,我们使用DataTemplate将每个数据项呈现为一个按钮。

3.DataGrid

DataGrid是WPF中用于显示表格的控件。它允许显示和编辑数据,支持排序、过滤、分组和分页等功能。DataGrid通常用于数据驱动的应用程序中,因为它可以使用户以一种直观的方式查看和操作数据。

以下是一个简单的DataGrid的XAML示例,它包含一个Person类的集合,并将其绑定到DataGrid的ItemsSource属性上:

<DataGrid ItemsSource="{Binding People}" AutoGenerateColumns="False" >
    <DataGrid.Columns>
        <DataGridTextColumn Header="Name" Binding="{Binding Name}" />
        <DataGridTextColumn Header="Age" Binding="{Binding Age}" />
        <DataGridCheckBoxColumn Header="IsMarried" Binding="{Binding IsMarried}" />
    </DataGrid.Columns>
</DataGrid>

此代码将一个Person类的集合绑定到DataGrid的ItemsSource属性上,并使用AutoGenerateColumns属性禁用自动生成列。然后,我们手动添加三个列:Name、Age和IsMarried。DataGridTextColumn用于呈现文本数据,而DataGridCheckBoxColumn用于呈现布尔值数据。

4.ListView

ListView也是一个用于显示项集合的控件,它与ListBox很相似,但提供了更多的自定义选项。ListView允许选择如何绘制每个项、如何排序和分组等。

以下是一个简单的ListView的XAML示例,它使用GridView作为视觉化布局,并使用DataTemplate将每个数据项呈现为一个StackPanel:

<ListView ItemsSource="{Binding Customers}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
            <GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" />
            <GridViewColumn Header="Email" DisplayMemberBinding="{Binding Email}" />
        </GridView>
    </ListView.View>
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <Image Source="{Binding Image}" Width="50" Height="50" />
                <TextBlock Text="{Binding Name}" Margin="10,0,0,0" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

该代码将一个名为Customers的集合绑定到ListView的ItemsSource属性上,并使用GridView列来表示每列的数据。然后,我们使用DataTemplate来定义每个数据项的呈现方式,这里使用了一个StackPanel来呈现图片和文本。

5.TreeView

TreeView是用于显示具有层次结构的数据的控件。它允许以树形式表示数据,并支持展开和折叠子项。TreeView通常在文件资源管理器、目录结构和导航菜单等应用程序中使用。

以下是一个简单的TreeView的XAML示例,它使用HierarchicalDataTemplate来定义每个数据项和其子项的呈现方式:

<TreeView ItemsSource="{Binding Departments}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Employees}">
            <TextBlock Text="{Binding Name}" />
            <HierarchicalDataTemplate.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Name}" />
                </DataTemplate>
            </HierarchicalDataTemplate.ItemTemplate>
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

此代码将一个名为Departments的部门集合绑定到TreeView的ItemsSource属性上,并使用HierarchicalDataTemplate对每个部门及其下属员工进行呈现。在这个例子中,我们使用了一个TextBlock来呈现每个部门的名称,并使用嵌套的HierarchicalDataTemplate来呈现每个部门的下属员工名称。

6.TabControl

TabControl是一种允许用户将不同视图放在不同选项卡页面上的控件。它允许组织和管理多个相关视图,并且只显示当前活动选项卡的内容。

以下是一个简单的TabControl的XAML示例,它包含两个选项卡页,并使用ContentPresenter来呈现每个选项卡页的内容:

<TabControl>
    <TabItem Header="Page1">
        <ContentPresenter Content="{Binding Page1Content}" />
    </TabItem>
    <TabItem Header="Page2">
        <ContentPresenter Content="{Binding Page2Content}" />
    </TabItem>
</TabControl>

该代码定义了一个TabControl,其中包含两个选项卡页。每个选项卡使用ContentPresenter来呈现其内容,并通过绑定到ViewModel中的Page1Content和Page2Content属性来获取内容。

总结

这些控件都是用于在WPF应用程序中呈现数据的控件。它们之间的主要区别在于其用途、功能、视觉外观和自定义选项。可以根据的需求和数据类型来选择适当的控件:

如果需要简单地显示一个数据项集合,则可以使用ItemsControl或ListView;
如果需要支持选择功能,则可以使用ListBox;
如果需要以表格形式查看或编辑数据,则应该使用DataGrid;
如果需要显示具有层次结构的数据,则应该使用TreeView;
如果需要将不同视图放在不同选项卡页面上,则应该使用TabControl。

WPF——GridView 项目中要用到一个数据分页栏,虽然自己没有实现过,但凭经验感觉它和ListBox/ListView有关。于是去网上搜了下WPF 数据分页栏,果然很多实现都用到了ListView。于是拣了一种比较简单的实现学习,其中包含下面代码: ListView.View的标签内出现了GridView。 在我印象中Grid是网格式的,而List是列表式的,所以我很好奇两者为什么可以混到一起。当然从类的关系上来看,应该是两者都继承了一个共同的父类。那么为了能使用起来更“自如”,对GridView有个系统的了解,还是有必要学习一 阅读详情

相关推荐

WPF ItemsControl控件的详细使用教程

WPF 中的 ItemsControl 是一个灵活的控件,可以显示绑定到集合的多个数据项。ItemsControl 是所有具有列表功能的控件(如 ListBox、ComboBox、TreeView 和 ListView)的基类。

weixin_39604653的博客 5566

WPF控件-ItemsControl介绍和用法

ItemsControl是用于展示一组项的控件。我们常见的列表(ListBox)、数据表格(DataGrid)等都是继承自ItemsControl。可用于自定义样式展示各种批量的数据集合。设置ItemsPanel布局控件为StackPanel,如果需要横向布局,则设置StackPanel的.设置里面为自己想展示的内容样式,并绑定对应的数据。通过绑定坐标来实现自定义控件按照一定的布局进行摆放,可以用于开发一些组态软件,设备布局图等。

海盗Sharp的博客 7542

【愚公系列】2023年10月 WPF控件专题 GridView控件详解

WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。

愚公智库 7326

wpf中ItemsControl的常用使用方法

WPF(Windows Presentation Foundation)中的ItemsControl是一个用于显示集合数据的控件。它允许您将任何类型的数据绑定到其中,并为每个数据项显示一个模板。在本文中,我们将详细介绍WPF中ItemsControl的各种用法。

Wod_7的博客 6080

CentOS 7下Oracle 11G RAC静默安装避坑指南:从网络规划到共享存储配置全流程

本文详细介绍了在CentOS 7环境下进行Oracle 11G RAC静默安装的全流程,包括网络规划、共享存储配置和系统参数调优等关键步骤。特别针对静默安装过程中的常见问题提供了实用的避坑指南和优化建议,帮助技术人员高效完成企业级数据库部署。

weixin_29234509的博客 124

Sony微单相机alpha6000 wifi远程控制(1)

引言 Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device. 索尼于2017年三月Re...

markfuk996的博客 4965

WPF 控件专题 DataGrid 控件详解

WPF 控件专题 DataGrid 控件详解

^@^lemon tea^@^ 9457

GD32F303开发实战(一):从零搭建MDK工程与时钟配置详解

本文详细介绍了如何从零开始为GD32F303微控制器搭建一个清晰、可维护的MDK工程模板。内容涵盖开发环境准备、工程目录结构规划、文件分组管理、关键工程配置,并重点解析了时钟树原理,手把手指导配置108MHz系统时钟。通过实战步骤与常见问题排查,帮助开发者构建一个稳定可靠的开发基础,便于后续功能扩展。

weixin_29174141的博客 269

WPF中实现Table布局控件

相信很多做WPF开发的小伙伴都遇到过表格类的需求,虽然现有的Grid控件也能实现,但是使用起来的体验感并不好,比如要实现一个Excel中的表格效果,估计你能想到的第一个方法就是套Border控件,用这种方法你需要控制每个Border的边框,并且在一堆Bordr中找到Grid.Row,Grid.Column来确定位置,明明很简单的一个功能,硬是耗费了大量时间。Grid的这种设计虽然功能很强大,但是同时也导致了操作繁琐可读性非常差的问题。

u013319633的博客 3460

内容创作全流程自动化:OpenClaw+大模型搞定选题+写稿+多平台发布

本文介绍了一套基于OpenClaw的全自动化内容创作流水线方案,帮助垂直领域创作者摆脱重复劳动。该方案将内容生产拆解为选题生成、内容撰写、格式适配、多平台发布四个模块,通过工作流引擎串联执行。系统能自动采集热榜生成选题、调用大模型撰写结构化内容、适配不同平台格式要求,并通过API+浏览器自动化实现多平台发布,全程只需人工最终审核。作者分享了各模块的实现细节,包括热榜采集、内容结构化生成、Markdown转换和发布策略,并提供了工作流编排方法。这套方案能为创作者每天节省约3小时,同时保证内容质量和发布效率。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 49

实现画布拖拽算子排布,通过flink实现算子编排计算,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1071

ItemsControl

一、ItemsControl 简介 ItemsControl 是用来表示一些条目集合的控件,它的成员是一些其它控件的集合。 其继承关系如下: 其常用的派生控件为:ListBox、ListView、ComboBox,为ItemsControl的具体实现。 ItemsControl的成员条目可以为不同的类型,如自定义的类型等。常常用于派生的ListBox、ListView、ComboBox 等控件的子条目中。 二、ItemsControl 控件显示数据 1、设置自定义数据类型 :MyTask //

Jeffxu_lib的博客 1968

软考高级系统架构设计师历年论文真题深度分析(2011-2025)

本文系统分析了2011-2025年系统架构设计师论文真题,归纳出十大主题类别,包括架构风格、企业集成、数据技术、非功能属性等。研究发现新兴技术占比最高(18.8%),企业集成、数据架构和非功能属性为三大核心考点。论文命题呈现明显技术演进特征,从经典架构理论逐步转向云原生、AI融合等前沿方向。备考建议重点关注高频考点和技术前沿,同时强化场景化解决方案能力。分析表明,架构师考试持续跟踪行业技术发展,注重理论与实践结合,为考生提供了明确的备考方向。

一几文的编程学习笔记。 2037

WPF 自定义DataGrid控件样式模板5个

要实现表头拖动,使用上面的样式代码是不行的,上面的样式代码去掉了拖动的控件。上面的代码实现了隔行换色的效果,但是没有鼠标选中效果。CanUserReorderColumns:获取或设置一个值用来判断是否允许用户重新排列表列的位置。AreRowGroupHeadersFrozen:获取或设置一个值用来判断是否冻结分组行的头部。AreRowDetailsFrozen:获取或设置一个值用来判断是否冻结每行内容的详细信息。RowDetailsTemplate:获取或设置被用于显示行详细部分的内容的模板。

1万+

手把手教你学Simulink——基于Simulink的蚁群算法路径规划仿真建模示例

路径规划是机器人导航系统中的核心任务之一,旨在为机器人找到一条安全且高效的路径,使其能够从起点到达目标点,同时避免与障碍物发生碰撞。在开始之前,需要定义工作环境(例如地图),包括起点、终点以及可能存在的障碍物位置。通过本指南,我们介绍了如何基于Simulink结合MATLAB实现蚁群算法的路径规划仿真建模。

MHD0815的博客 222

详解YOLOv5网络结构/数据集获取/环境搭建/训练/推理/验证/导出/部署

本文给大家带来的教程是利用YOLOv5训练自己的数据集,以及有关YOLOv5的网络结构讲解/数据集获取/环境搭建/训练/推理/验证/导出/部署相关的教程,同时通过示例的方式让大家来了解具体的操作流程,过程中还分享给大家一些好用的资源,我还对其中的参数进行了详细的讲解,通过本文大家可以成功训练自己的数据集,在开始之前给大家推荐一下我的YOLOv5专栏,本专栏包含上百种YOLOv5的改进机制以及如何撰写论文的教程,手把手教大家如何改进YOLOv5非常适合科研小白。

Snu77的博客 4899

WPF-常见集合控件(ItemsControl、ListView、DataGrid、TreeView、TabControl.......)

属于ItemsControl族主要用到两个依赖属性:ItemSource:指定数据来源ItemTemplete:在资源中指定一个数据显示模板更多属性:DisplayMemberPath、SelectedValuePath。。。

rwo_bear的博客 4918

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【WPF应用32】WPF中的DataGrid控件详解与示例

WPF中的DataGrid控件详解与示例

qq_35320456的博客 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

WPF真入门教程13--DataGrid数据表格控件

在WPF中,主要使用DataGrid控件进行表格化数据的展示,控件提供一个用户界面,可用于显示单个表或显示一组表之间的分层关系,提到DataGrid 不管是Asp.Net中的网页开发还是WinForm应用程序开发都会频繁使用。DataGrid列的类型在创建DataGrid 时可以通过AutoGenerateColumns 属性设置列是否自动生成,从而加入自定义列,我们来做一个示例,学习如何使用DataGrid。首先在项目中创建2个文件夹,一个control,添加DataGridWin窗口,一个model,两

hqwest的专栏 8812

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【wpf】实战 ItemsControl + 用户控件 + 绑定

这次是对之前学习的内容的一次实战内容,背景如下,我写了一个串口控件(用户控件)界面上需要支持多个串口,每个串口的都有配置项,配置项需要保存到本地。 首先准备一个ItemsControl,每个子项装一个串口控件。然后,构建数据结构,每个串口对应一个SeriaInfo,然后再构建一个SeriaInfo的数组,作为数据源。由于我不想横向摆放控件,所以需要修改ItemsControl的ItemsPanel。............

songhuangong123的博客 6735

WPF ItemsControl控件

的强大之处在于它可以自定义数据项的布局。你可以通过ItemsPanel和属性来控制布局和外观。ItemsPanel属性允许你指定一个面板来排列数据项。常见的面板包括StackPanelWrapPanelCanvas等。属性允许你自定义每个数据项的容器样式。是一个非常强大的控件,适用于需要自定义布局和外观的场景。通过ItemsPanel, 和属性,你可以灵活地控制数据项的排列和样式。希望这些示例能帮助你更好地理解和使用。

以梦为马 不负韶华 1502

【wpf】ItemsControl 的Binding 小技巧

ItemsControl 非常常用和好用的控件,我经常将之用于配置界面! 比如这么一个配置界面: 整体是一个ItemsControl,每个子界面就是其中的一个Item。 ItemsControl 的ItemsSource 绑定到ParameterInfo 的集合 public ObservableCollection<ParameterInfo> configInfos { get; set; } = new ObservableCollection<Paramete

songhuangong123的博客 2478

[WPF自定义控件库]了解如何自定义ItemsControl

1. 前言 对WPF来说ContentControl和ItemsControl是最重要的两个控件。 顾名思义,ItemsControl表示可用于呈现一组Item的控件。大部分时候我们并不需要自定义ItemsControl,因为WPF提供了一大堆ItemsControl的派生类:HeaderedItemsControl、TreeView、Menu、StatusBar、ListBox、ListView...

weixin_30840573的博客 856

[WPF] 集合元素数据绑定与模板

在 WPF 中使用 ItemsControl 进行集合数据的绑定

诺尔的博客 1569

WPF 表格控件 ReoGrid 的简单使用

目录 一、概述 二、安装 三、添加控件 四、加载 Excel 五、属性设置 六、支持触摸滚动 七、其它操作 1、显示和隐藏列 2、显示特定字体 八、资源链接 一、概述 ReoGrid是一个开源的表格控件库,支持 Winform 和WPF。本文演示在WPF中的使用,用的是直接加载Excel的方式,另外解决了触摸滑动的问题。 二、安装 新建好 WPF 项目后,我们使用 NuGet 安装ReoGrid。直接搜索 “ReoGrid”,选择 unvell.ReoGr...

寒冰屋的专栏 7272

WPF篇(17)-ListBox列表控件+ListView数据列表控件

首先,我们在前端实例化了一个ListView控件,并为View属性实例化了一个GridView对象,最后为GridView对象实例化了3列GridViewColumn ,分别设置为姓名年龄和地址,特别需要注意的是DisplayMemberBinding属性的写法,这里采用了数据绑定的写法,意思是将ListView控件的数据源的Name属性显示在姓名那一列,Age属性显示在年龄那一列,Address属性显示在地址那一列(我们明确知道ListView数据源的类型就是Person的实例集合)。

一个人的江湖 4739
studypipi
博客等级 码龄5年 2粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值