DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是以数据为中心的商业智能产品,都能通过DevExpress WPF控件来实现。
本文主要介绍标准WPF DataGrid和DevExpress WPF GridControl之间的主要区别,以及如何使用它从标准WPF DataGrid迁移到DevExpress WPF GridControl。
在上文中(点击这里回顾>>),我们为大家介绍了标准WPF DataGrid和DevExpress WPF GridControl在显示数据、绑定数据时的不同,本文将继续介绍他们在排序、分组和过滤数据时的不同等,希望对大家有所帮助~
对数据进行排序、分组和筛选
运行时功能
标准WPF DataGrid在运行时不支持排序、分组和筛选操作。
DevExpress WPF GridControl允许用户以几种方式执行这些操作。
筛选
使用以下选项当中的一个筛选视图数据:
- Drop-down Filter:用户可以单击列标题中的过滤器图标来显示此菜单。
- Automatic Filter Row:显示在所有其他行上方的特殊行。
- Filter Editor:用户可以使用Filter Editor表单构建筛选标准并创建复杂的筛选条件。
用户可以在运行时清除或禁用过滤器。
自定义排序、分组、过滤
您可以实现自定义排序、分组和筛选逻辑:
自定义排序
要实现自定义排序,将GridColumn.SortMode属性设置为"Custom"并处理GridControl.CustomColumnSort事件。
自定义分组
设置GridColumn.SortMode属性为"Custom",并处理GridControl.CustomColumnGroup事件来实现自定义分组。
自定义筛选
要自定义过滤器逻辑,请执行以下操作当中的一个:
- 处理GridControl.CustomRowFilter事件并在这里实现自定义逻辑。
- 处理GridControl.SubstituteFilter/TreeListView.SubstituteFilter事件,这些事件允许您用筛选条件替换筛选器,还可以实现自定义标准操作符来替换默认操作符。
搜索功能
DevExpress GridControl的内置搜索面板可以在视图中突出显示搜索结果,并可选择过滤行。
定义单元格编辑器
标准WPF DataGrid
使用以下类型列将编辑器嵌入单元格:
您也可以使用DataGridTemplateColumn,此列允许您覆盖单元格模板并指定所需的编辑器。
DevExpress WPF GridControl
使用GridColumn对象,每个列根据数据字段类型自动创建一个编辑器。
格式化文本
标准WPF DataGrid
没有内置API来格式化文本或数字字段,您需要使用标准的WPF绑定来显示格式化的值。
DevExpress WPF GridControl
允许您在以下级别指定格式化API:
- GridControl / GridColumn设置
- 列编辑器的设置
- 列编辑器的模板
为单元格和行着色
标准WPF DataGrid
包括允许您为单元格和行着色的样式和模板。
DevExpress WPF GridControl
除了行/单元格样式和模板之外,还支持条件格式机制。
输入验证
异常验证
标准WPF DataGrid
要求使用Binding.ValidatesOnExceptions属性在列级别启用验证。
DevExpress WPF GridControl
自动验证异常输入。
使用IDataErrorInfo和INotifyDataErrorInfo进行验证
标准WPF DataGrid
要求您在列绑定级别使用Binding.ValidatesOnDataErrors或Binding.ValidatesOnNotifyDataErrors属性启用验证。
DevExpress WPF GridControl
IDataErrorInfo或INotifyDataErrorInfo接口实现时,自动显示错误信息。
验证规则
标准WPF DataGrid
开箱即用,支持验证规则。
DevExpress WPF GridControl
DevExpress GridControl不直接与验证规则一起工作,处理ValidateCell事件并使用Validation Rules来实现验证逻辑。
其他技术
DevExpress WPF GridControl支持以下标准WPF DataGrid不支持的技术,您可以在以下应用程序级别验证输入并指定不同的错误类型和图标:
- 模型 - IDXDataErrorInfo
实现IDXDataErrorInfo接口来在Model级别验证输入,并指定不同的错误类型和图标。 - 模型 - 数据注释属性
使用属性来验证模型级别的输入。 - View/ViewModel - 基于事件的验证 :
使用以下事件来验证View/ViewModel级别的输入,并指定不同的错误类型和图标: