wpf devexpress绑定grid到总计和分组统计

此主题描述了如何在gridcontrol中的视图模型和显示定义总计和分组统计

在视图模型中指定统计

1、创建 SummaryItemType 枚举你想要在GridControl中显示的统计类型:

public enum SummaryItemType { Max, Count, None }

2、创建一个grid统计描述类

public class Summary : BindableBase {
    public Summary(SummaryItemType type, string fieldname) {
        Type = type;
        FieldName = fieldname;
    }
    public SummaryItemType Type { get; }
    public string FieldName { get; }
}

3、在视图模型中指定合计和分组统计集合

public class CustomersViewModel : ViewModelBase {
    public CustomersViewModel() {
        // ...
        TotalSummary = new ObservableCollection<Summary>() {
            new Summary(SummaryItemType.Count, nameof(Customer.Name)),
            new Summary(SummaryItemType.Max, nameof(Customer.Visits))
        };
        GroupSummary = new ObservableCollection<Summary>() {
            new Summary(SummaryItemType.Count, nameof(Customer.Name))
        };
    }
    // ...
    public ObservableCollection<Summary> TotalSummary { get; }
    public ObservableCollection<Summary> GroupSummary { get; }
}

如果你需要GridControl引用在TotalSummary和GroupSummary集合中的改变,这些集合必须实现INotifyCollectionChanged 接口

创建统计模板

1、指定一个统计类型(Min,Max,Count),设置SummaryItemBase.SummaryType属性到SummaryItemType枚举值。创建ObjectToObjectConverter来映射SummaryItemType枚举值到SummaryItemType枚举值:

<Window ... 
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm">
    <Window.Resources>
        <dxmvvm:ObjectToObjectConverter x:Key="SummaryTypeConverter">
            <dxmvvm:MapItem Source="Max" Target="Max" />
            <dxmvvm:MapItem Source="Count" Target="Count" />
            <dxmvvm:MapItem Source="None" Target="None" />
        </dxmvvm:ObjectToObjectConverter>
    </Window.Resources>
    <!-- ... -->
</Window>

2、创建一个模板生成统计

使用SummaryTypeConverter去指定Converter参数对于SummaryItemBase.SummaryType属性

使用DependencyObjectExtensions.DataContext附加属性当你绑定到GridControl统计属性。这个附加的属性同步数据更新束缚属性提高grid性能:
 

<Window.Resources>
    <DataTemplate x:Key="SummaryTemplate">
        <ContentControl>
            <dxg:GridSummaryItem FieldName="{Binding Path=(dxci:DependencyObjectExtensions.DataContext).FieldName, RelativeSource={RelativeSource Self}}"
                                 SummaryType="{Binding Path=(dxci:DependencyObjectExtensions.DataContext).Type, RelativeSource={RelativeSource Self}, Converter={StaticResource SummaryTypeConverter}}"/>
        </ContentControl>
    </DataTemplate>
</Window.Resources>

在GridControl中显示视图模型统计

1、绑定TotalSummarySource和GroupSummarySource属性到总计和分组统计集合

2、设置TotalSummaryGeneratorTemplate和GroupSummaryGeneratorTemplate属性到模板生成统计

3、设置DataViewBase.TotalSummaryPosition属性到Top和Bottom显示Total Summary Panel

<dxg:GridControl ...
                 TotalSummarySource="{Binding TotalSummary}"
                 GroupSummarySource="{Binding GroupSummary}"
                 TotalSummaryGeneratorTemplate="{StaticResource SummaryTemplate}"
                 GroupSummaryGeneratorTemplate="{StaticResource SummaryTemplate}">
    <dxg:GridControl.View>
        <dxg:TableView TotalSummaryPosition="Bottom"/>
    </dxg:GridControl.View>
</dxg:GridControl>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/157192.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

超全整理,Pytest自动化测试框架-多进程(pytest-xdist)运行总结...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 平常我们功能测试…

在Pycharm不同项目中使用同一环境

一、打开代码1&#xff08;理想环境&#xff09; 查看环境所在地址。 二、打开另一个项目

小红书自动点赞评论脚本,可以群控多账号,按键精开源版代码分享

这个需要连接服务器&#xff0c;你可以在易语言配置一个服务端&#xff0c;然后设置好端口&#xff0c;脚本部署在模拟器或者云手机或者真机里面实现多账号点赞评论的效果&#xff0c;针对一个作品&#xff0c;按键精灵写的脚本&#xff0c;服务端的脚本需要自己写哈&#xff0…

和鲸 ModelWhale 入驻华为蓝鲸应用商城,助力大模型时代 AI 赋能应用落地

近日&#xff0c;和鲸旗下数据科学协同平台 ModelWhale 成功入驻华为蓝鲸应用商城&#xff0c;这也是继和鲸与华为发布数据分析建模实训联合解决方案后的再度携手&#xff0c;标志着双方的合作进入更全面、更深入的新阶段。 华为蓝鲸应用商城是华为数据存储面向客户提供的一站…

5年经验之谈 —— 接口测试测什么?这篇文章告诉你

接口测试&#xff1a;基本功能 &#xff08;1&#xff09;接口协议&#xff08;基于HTTP、HTTPS、Dubbo实现?&#xff09; &#xff08;2&#xff09;接口调用方式 &#xff08;post、get&#xff1f;&#xff09; &#xff08;3&#xff09;数据的交换 接口参数&#xff1…

请假条生成器

hnust请假条 湖南科专请假条生成器 https://hnust.rick.icu/new &#xff08;新版&#xff09; github仓库地址 https://github.com/rickhqh/hnust_leave_note v2.0 更新 vant和vue重构了整个源码同步hnust新版请假条样式修复了一些bug增加了一些功能和彩蛋 声明 一切开发旨…

3年来,微软 AI 不自觉地泄露了38TB 机密数据

WIZ研究团队最近发现一个超额配置的SAS标志已在GitHub上暴露了近三年。该标志允许访问38TB的大量私人数据。此Azure存储还包含其他机密&#xff0c;例如隐藏在两名微软员工的磁盘备份中的专用SSH密钥。这一发现突显了强有力的数据安全措施的重要性。 发生了什么&#xff1f; W…

IDEA中安装Docker插件实现远程访问Docker

开启远程Docker访问 #修改Docker服务文件&#xff0c;需要先切换到root用户 vim /lib/systemd/system/docker.service #注释掉"ExecStart"这一行&#xff0c;并添加下面这一行信息 ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock…

超聚变服务器关闭超线程CPU的步骤(完整版)

前言: 笨鸟先飞&#xff0c;好记性不如烂笔头。 我们项目都用不到超线程CPU&#xff0c;所以调测设备的时候都需要关掉&#xff0c;最近新设备换成了超聚变的服务器&#xff0c;这篇记录我关闭&#xff08;超聚变&#xff09;服务器超线程CPU的方法步骤。 关闭超线程CPU的步骤…

java21中一次启动1000万个虚拟线程要多久?需要多少平台线程?

什么是虚拟线程 虚拟线程是在Java并发领域添加的一个新概念&#xff0c;那么虚拟线程到底是做什么用的呢&#xff1f; 根据JEP中的内容告诉我们&#xff0c;虚拟线程是一种轻量级线程&#xff0c;可以显著地帮助我们减少编写、维护、观察高吞吐量应用程序的工作量。它的实现目…

为什么别人年薪30W+?同样为测试人,“我“的测试之路...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、软件测试员&am…

Go 上下文 context.Context

Go语言中的上下文&#xff08;Context&#xff09;是一种用于在 Goroutines 之间传递取消信号、截止时间和其他请求范围值的标准方式。context 包提供了 Context 类型和一些相关的函数&#xff0c;用于在并发程序中有效地传递上下文信息。 在Go语言中&#xff0c;上下文通常用于…

Minio - 多节点多驱动器安装部署

先决条件 网络互通 MinIO集群中的节点的网络需要互相双向互通。 MinIO API默认端口9000 MinIO console默认端口9001 MinIO强烈建议使用负载均衡器来管理与集群的连接。负载均衡器策略使用“最小连接数”逻辑&#xff0c;因为在部署中任何 MinIO 节点都可以接收、路由或处理…

什么是软件定制开发?|app网站小程序定制

什么是软件定制开发&#xff1f;|app网站小程序定制 软件定制开发是根据客户的特定需求&#xff0c;为其量身定制开发软件解决方案的全过程。与市面上已有的通用软件不同&#xff0c;软件定制开发可以满足客户在业务流程、功能要求、用户界面等方面的个性化需求。 软件定制开发…

Redis链表

前言 链表作为一种常见的数据结构&#xff0c;一般都会内置在很多高级语言中。由于Redis使用的是C语言并没有内置这种数据结构&#xff0c;所以Redis构建了自己的链表实现。 链表在Redis中应用广泛&#xff0c;比如列表建的底层实现之一就是链表。当一个列表键包含了数量比较多…

Python字符串类型

目录 目标 版本 官方文档 书写格式 字符串合并 常用函数 字母转小写&#xff08;首字母转大写&#xff09; 字母转小写&#xff08;适用于在国际化环境中&#xff0c;忽略字母大小写进行比较的场景&#xff09; 字母转小写&#xff08;适用于非国际化环境中&#xff0…

JSON 格式的接口测试流程【Eolink Apikit】

在进行JSON格式的接口测试时&#xff0c;需要使用工具发送HTTP请求并获取响应。测试工具可以是单独的测试框架&#xff0c;如 Eolink Apikit。测试人员需要根据接口文档和测试用例编写测试脚本&#xff0c;然后运行测试并分析结果&#xff0c;以确保接口的质量和稳定性。 当我…

数据库mysql详细教学

1024 byte 构成 1 kb 1024 KB > 1MB 1024 MB > 1GB 1024 GB > 1TB 1024 TB > 1PB 内存的数据&#xff0c;断电后会丢失。外存的数据&#xff0c;断电后数据还在~ “持久化” 这样的次&#xff0c;意思就是把数据写到硬盘上。 mysql的第一组基本操作&#xff1a;数…

02_SHELL编程之流程控制和循环语句

课程目标 熟悉流程控制语句基本语法&#xff0c;如if…else… 掌握for循环语句的基本语法结构 掌握while和until循环语句的基本语法结构 ###一、流程控制语句 ####1. 基本语法结构 F: false 假 T: true 真 if [ condition ];thencommandcommand fi ​ [ 条件 ] &&a…

吴恩达《机器学习》8-7:多元分类

在机器学习领域&#xff0c;经常会遇到不止两个类别的分类问题。这时&#xff0c;需要使用多类分类技术。本文将深入探讨多类分类&#xff0c;并结合学习内容中的示例&#xff0c;了解神经网络在解决这类问题时的应用。 一、理解多类分类 多类分类问题是指当目标有多个类别时…