当前位置: 首页 > news >正文

「对比评测」标准WPF DataGrid与DevExpress WPF GridControl有何不同?(一)

DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。

本文主要介绍标准WPF DataGrid和DevExpress WPF GridControl之间的主要区别,以及如何使用它从标准WPF DataGrid迁移到DevExpress WPF GridControl。

获取DevExpress v24.1正式版下载(Q技术交流:532598169)

显示数据
标准WPF DataGrid

以表格格式显示数据,若要配置数据表示,请自定义控件和列对象。

DevExpress WPF GridControl

使用三种类型的视图显示数据,要配置数据表示,请自定义View和column对象:

  • TableView
  • CardView
  • TreeListView
  • GridColumn
绑定数据

标准WPF DataGrid和DevExpress WPF GridControl使用相同的属性绑定到数据ItemsSource。

标准WPF DataGrid

列使用Binding或SelectedItemBinding属性绑定到数据,DataGridTemplateColumn定义了单元格模板内的数据绑定。

DevExpress WPF GridControl

列使用FieldName和Binding属性绑定到数据。

Binding属性使用标准绑定机制,FieldName使用PropertyDescriptor对象,性能优于Binding属性。

不能使用FieldName属性将列绑定到集合属性,要在GridControl单元格中显示这样的属性,可以使用以下任何一种技术:

  • 将应用程序模型中的字段类型从集合更改为对象。
  • 使用Binding属性。

GridControl使用FieldName属性来标识列,当您使用Binding属性时,将自动设置FieldName属性。

未绑定列

标准WPF DataGrid

将DataGridTemplateColumn添加到列集合中,要在此列中显示数据,覆盖其CellTemplate属性并指定一个数据字段。

DevExpress WPF GridControl

指定一个基于现有数据字段计算值的ColumnBase.UnboundExpression,你也可以处理GridControl.CustomUnboundColumnData / TreeListView.CustomUnboundColumnData事件来存储未绑定列的值。

对数据进行排序、分组和筛选

标准WPF DataGrid本身不处理数据操作,相反它将它们委托给绑定的ICollectionView。

DevExpress WPF GridControl可以自己执行数据操作,要对数据进行排序、分组和筛选,不需要将其绑定到ICollectionView后代。

运行时功能

标准WPF DataGrid在运行时不支持排序、分组和筛选操作。

DevExpress WPF GridControl允许用户以几种方式执行这些操作。

排序

执行以下操作当中的一个对列进行数据排序:

  • 单击列的标题
  • 调用列的上下文菜单并单击“升序排序”、“降序排序”或“清除排序”。

要清除排序顺序,请执行以下操作当中的一个:

  • 按CTRL键并单击列的标题。
  • 从列的标题上下文菜单中选择“Clear Sorting ”。

DevExpress WPF中文教程图集

GridControl支持同时按多个列排序。

分组

执行以下操作当中的一个对View数据进行分组:

  • 将列标头从列标头面板拖到组面板。
  • 调用列的上下文菜单并单击Group By This column。

要取消视图的分组,请执行以下操作当中的一个:

  • 将列标头从“组”面板拖到“列标头面板”。
  • 调用列的上下文菜单并单击Ungroup。

DevExpress WPF中文教程图集

还可以更改列的排序顺序。

未完待续,更多内容下期见......

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微信删除了好友如何恢复?试试这3种方法,赶紧收藏!shuju
  • 谈到这个痛点,写C的和不写C的码农都沉默了
  • Celery 中,广播模式可以通过使用 RabbitMQ 的 fanout 交换机来实现
  • MFC工控项目实例之七点击下拉菜单弹出对话框
  • WHAT - 通过 react-use 源码学习 React(State 篇)
  • 打卡52天------图论(应用题)
  • 钉钉群消息提醒
  • Python -- GUI图形界面编程—GUI编程实例 博主也在持续学习中[ 持续更新中!!! 欢迎白嫖 ]
  • Python编程进阶题
  • centos彻底卸载docker服务
  • [笔记]基于小波分析的基频识别
  • 前端:html+css:伪类画箭头(实心)
  • 一般图最大权匹配
  • 前端面试——什么是原型和原型链
  • 这个暑假作业有点特别,帮100位老人开启这个功能
  • 2017 前端面试准备 - 收藏集 - 掘金
  • exports和module.exports
  • java小心机(3)| 浅析finalize()
  • Magento 1.x 中文订单打印乱码
  • MYSQL 的 IF 函数
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • pdf文件如何在线转换为jpg图片
  • Redis 懒删除(lazy free)简史
  • SegmentFault 2015 Top Rank
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Terraform入门 - 3. 变更基础设施
  • 工作中总结前端开发流程--vue项目
  • 学习ES6 变量的解构赋值
  • 主流的CSS水平和垂直居中技术大全
  • 转载:[译] 内容加速黑科技趣谈
  • 数据库巡检项
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​zookeeper集群配置与启动
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • ######## golang各章节终篇索引 ########
  • #Datawhale AI夏令营第4期#AIGC方向 文生图 Task2
  • #include
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (09)Hive——CTE 公共表达式
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (6)添加vue-cookie
  • (C++20) consteval立即函数
  • (zt)最盛行的警世狂言(爆笑)
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (九)One-Wire总线-DS18B20
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (五)MySQL的备份及恢复
  • (转)ORM
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net Stream篇(六)
  • .NET 中的轻量级线程安全
  • .NET连接MongoDB数据库实例教程
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • :class的用法及应用