news 2026/7/23 16:47:20

DevExpress WPF中文教程:Data Grid - 如何绑定到有限制的自定义服务(一)?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DevExpress WPF中文教程:Data Grid - 如何绑定到有限制的自定义服务(一)?

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

本文将演示如何将GridControl绑定到有限制的自定义服务(例如,不兼容的过滤器和排序),由于内容较多,我们将分为几篇文章来阐述,欢迎持续关注我们哟~

获取DevExpress WPF v25.1正式版下载

Step 1:获取数据并启用滚动

在此步骤中,您将创建一个虚拟源,从服务中获取行,并在GridControl中启用滚动。

注意:在本教程中,使用Issues Service作为数据源的示例。

获取数据和启用滚动

1. 添加一个GridControl,列对应于Issues Service的IssueData到您的项目窗口:

XAML

<dxg:GridControl x:Name="grid" > <dxg:GridControl.Columns> <dxg:GridColumn FieldName="Subject" /> <dxg:GridColumn FieldName="User" /> <dxg:GridColumn FieldName="Created" /> <dxg:GridColumn FieldName="Votes" /> <dxg:GridColumn FieldName="Tags" /> </dxg:GridControl.Columns> </dxg:GridControl>

注意GridControl不能显示Tags列的值,因为IssueData.Tags属性的类型是一个字符串数组。

2. 初始化虚拟源:

  • 创建一个虚拟源(本教程中的InfiniteAsyncSource)。
  • 创建自定义Tags属性并将字符串数组转换为单个字符串-逗号分隔的标签列表(参见CreateTagsProperty方法)。
  • 指定VirtualSourceBase.CustomProperties属性。

C#

public MainWindow() { InitializeComponent(); var source = new InfiniteAsyncSource() { CustomProperties = GetCustomProperties() }; } static DynamicPropertyDescriptor CreateTagsProperty() { return new DynamicPropertyDescriptor( name: "Tags", propertyType: typeof(string), getValue: x => string.Join(", ", ((IssueData)x).Tags)); } static PropertyDescriptorCollection GetCustomProperties() { var customProperties = TypeDescriptor.GetProperties(typeof(IssueData)) .Cast<PropertyDescriptor>() .Where(x => x.Name != "Tags") .Concat(new[] { CreateTagsProperty() }) .ToArray(); return new PropertyDescriptorCollection(customProperties); }

3. 处理虚拟源:

  • 处理窗口的Unloaded事件。
  • 调用VirtualSourceBase.Dispose方法。

C#

public MainWindow() { // ... Unloaded += (o, e) => { source.Dispose(); }; }

4. 从数据源获取行:

  • 处理InfiniteAsyncSource.FetchRows事件。
  • 使用 Issues Service的GetIssuesAsync方法获取数据。
  • 创建FetchRowsResult类对象并指定FetchRowsAsyncEventArgs.Result属性。

C#

public MainWindow() { // ... source.FetchRows += (o, e) => { e.Result = FetchRowsAsync(e); }; } static async Task<FetchRowsResult> FetchRowsAsync(FetchRowsAsyncEventArgs e) { IssueSortOrder sortOrder = GetIssueSortOrder(e); IssueFilter filter = MakeIssueFilter(e.Filter); const int pageSize = 30; var issues = await IssuesService.GetIssuesAsync( page: e.Skip / pageSize, pageSize: pageSize, sortOrder: sortOrder, filter: filter); return new FetchRowsResult(issues, hasMoreRows: issues.Length == pageSize); } static IssueSortOrder GetIssueSortOrder(FetchRowsAsyncEventArgs e) { return IssueSortOrder.Default; } static IssueFilter MakeIssueFilter(CriteriaOperator filter) { return null; }

通过将生成的虚拟源实例赋值给DataControlBase.ItemsSource属性,将GridControl绑定到虚拟源:

C#

public MainWindow() { // ... grid.ItemsSource = source; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 2:15:17

知名Java开发工具IntelliJ IDEA v2025.3正式上线——开发效率全面提升

IntelliJ IDEA 是由 JetBrains 开发的智能 Java IDE&#xff0c;提供代码自动补全、重构工具、框架集成&#xff08;Spring/JPA 等&#xff09;、数据库工具和调试支持&#xff0c;通过深度代码分析与跨语言功能优化企业级开发流程&#xff0c;被广泛认可为专业 Java 开发者的高…

作者头像 李华
网站建设 2026/7/21 6:07:24

高并发系统性能测试中的用户数测算体系研究

在数字化业务爆发式增长的2025年&#xff0c;电商平台、金融服务、在线教育等领域的系统频繁面临高并发访问压力。准确的并发用户数测算成为性能测试成功的核心前提&#xff0c;直接关系到系统稳定性评估与容量规划精确度。本文基于软件工程理论与行业实践&#xff0c;构建涵盖…

作者头像 李华
网站建设 2026/7/22 7:23:31

G-Star 精选开源项目推荐|12.7 — 12.12

G-Star 开源摘星计划&#xff0c;简称 G-Star 计划&#xff0c;是 AtomGit 平台推出的针对开源项目成长全流程的扶持计划&#xff0c;我们为每一个申请加入 G-Star 计划的开源项目提供资源对接与运营支持&#xff1a;包括代码托管、品牌市场推广、社区化运营等。参与 G-Star 计…

作者头像 李华
网站建设 2026/7/21 23:41:54

模数转换芯片FZH709,应用开发相关数据技术手册

1 芯片功能说明 FZH709 是一款高精度、低功耗模数转换芯片&#xff0c;一路差分输入通道&#xff0c;内置温度传感器和 高精度振荡器。 FZH709 的 PGA 可选&#xff1a;1、2、64、128&#xff0c;默认为 128。 FZH709 正常模式下的 ADC 数据输出速率可选&#xff1a;10Hz、40Hz…

作者头像 李华
网站建设 2026/7/23 3:40:10

16B参数撬动千亿级能力:Ring-mini-2.0重新定义轻量化大模型标准

16B参数撬动千亿级能力&#xff1a;Ring-mini-2.0重新定义轻量化大模型标准 【免费下载链接】Ring-mini-2.0 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/Ring-mini-2.0 导语 你还在为大模型部署成本高、推理速度慢而烦恼吗&#xff1f;蚂蚁集团最新开源…

作者头像 李华