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>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定量数据和定性数据

定量数据本质上是数值&#xff0c;应该是衡量某样东西的数量。 定性数据本质上是类别&#xff0c;应该是描述某样东西的性质。 全部的数据列如下&#xff0c;其中既有定性列也有定量列&#xff1b; import pandas as pdpd.options.display.max_columns None pd.set_option(e…

世界坐标系,相机坐标系,像素坐标系转换 详细说明(附代码)

几个坐标系介绍&#xff0c;相机内外参的回顾参考此文。 本文主要说明如何在几个坐标系之间转换。 本文涉及&#xff1a; 使用相机内参 在 像素坐标系 和 相机坐标系 之间转换。使用相机外参&#xff08;位姿&#xff09;在相机坐标系 和 世界坐标系 之间转换。(qw,qx,qy,qz,…

【C++】pow函数实现的伽马变换详解和示例

本文通过原理和示例对伽马变换进行详解&#xff0c;并通过改变变换系数展示不同的效果&#xff0c;以帮助大家理解和使用。 原理 伽马变换是一种用于图像增强的技术&#xff0c;它可以用来提高或降低图像的对比度&#xff0c;常用于医学图像处理和计算机视觉等领域。伽马变换…

Fork项目新分支如何同步

这里以seata项目为示例&#xff1a; 一、添加Fork仓库的源仓库 git remote add seata gitgithub.com:seata/seata.git二、fetch git fetch seata

姿态估计 MediaPipe实现手势,人体姿态,面部动作估计的用法

姿态估计 MediaPipe实现手势&#xff0c;人体姿态&#xff0c;面部动作估计的用法 import mediapipe as mp import cv2 import numpy as np import time # 定义一个函数&#xff0c;计算两个点的距离 def findDis(pts1,pts2):return ((pts2[0]-pts1[0])**2 (pts2[1]-pts1[1])*…

媒体行业的3D建模:在影视中创造特效纹理

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 在本文中&#xff0c;我们将探讨 3D 建模在媒体行业中的作用&#xff0c;特别是它在影视特效创作…

【C++】类和对象的知识点

目录 一&#xff0c;初始化列表 二&#xff0c;static静态成员 三&#xff0c;友元 3-1&#xff0c;友元函数 3-2&#xff0c;友元类 四&#xff0c;内部类 五&#xff0c;匿名对象 一&#xff0c;初始化列表 引入&#xff1a; 在谈初始化列表前&#xff0c;我们先清…

反渗透水处理成套设备有哪些

反渗透水处理成套设备主要包括反渗透装置、预处理系统、控制系统等部分。 反渗透装置&#xff1a;反渗透水处理设备的核心部分&#xff0c;由反渗透膜、压力容器、膜组件等组成。反渗透膜是一种高分子材料制成的半透膜&#xff0c;能够截留水中的溶解盐、有机物、细菌等杂质&a…

(动手学习深度学习)第13章 计算机视觉---微调

文章目录 微调总结 微调代码实现 微调 总结 微调通过使用在大数据上的恶道的预训练好的模型来初始化模型权重来完成提升精度。预训练模型质量很重要微调通常速度更快、精确度更高 微调代码实现 导入相关库 %matplotlib inline import os import torch import torchvision f…

Midjourney绘画提示词Prompt参考学习教程

一、工具 SparkAi&#xff1a; SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软…

SDL2 播放音频数据(PCM)

1.简介 这里以常用的视频原始数据PCM数据为例&#xff0c;展示音频的播放。 SDL播放音频的流程如下&#xff1a; 初始化音频子系统&#xff1a;SDL_Init()。设置音频参数&#xff1a;SDL_AudioSpec。设置回调函数&#xff1a;SDL_AudioCallback。打开音频设备&#xff1a;SD…

ML-Net:通过深度学习彻底改变多标签分类

一、说明 多标签分类是一项具有挑战性的机器学习任务&#xff0c;其中输入可以同时属于多个类。传统的多标签分类方法通常依赖于将问题转化为一系列二元分类任务或使用集成方法。然而&#xff0c;深度学习的出现开创了多标签分类的新时代&#xff0c;ML-Net 等模型突破了该领域…

02-1解析xpath

我是在edge浏览器中安装的xpath&#xff0c;需要安装的朋友可以参考下面这篇博客最新版edge浏览器中安装xpath插件 一、xpathd的使用 安装lxml pip install lxml ‐i https://pypi.douban.com/simple导入lxml.etree from lxml import etreeetree.parse() 解析本地文件 htm…

SpringBoot和Spring的区别是什么?

目录 Spring SpringBoot 区别&#xff1a; 1、自动配置: 2、内嵌Web服务器: 3、约定大于配置: Spring Spring是一个非常强大的企业级Java开发框架&#xff0c;Spring 框架为开发 Java 应用程序提供了全面的基础架构支持。它包含一些很好的功能&#xff0c;如依赖注入和开…

vscode的git 工具使用

vscode的git 工具使用 目录概述需求&#xff1a; 设计思路实现思路分析1.git 工具的使用2.提交代码3.查看历史提交代码 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a be…

使用webhook发送企业微信消息

文章目录 使用webhook发送企业微信消息企业微信群机器人思路实现总结 使用webhook发送企业微信消息 企业微信群机器人思路实现 1&#xff0c;在企业微信中新建一个群 2&#xff0c;在设置里面添加机器人 3&#xff0c;拿到webhook地址 在终端某个群组添加机器人之后&#xf…

Servlet API 详解

文章目录 前言什么是ServletHttpServletHttpServletRequest1. form表单构造POST请求2. JSON形式表示body部分 HttpServletResponse 前言 前面为大家介绍了如何使用 servlet 写一个简单的网站&#xff0c;前面只是大概了解了如何使用简单的 servlet&#xff0c;而平时网站的逻辑…

Hive Lateral View explode列为空时导致数据异常丢失

一、问题描述 日常工作中我们经常会遇到一些非结构化数据&#xff0c;因此常常会将Lateral View 结合explode使用&#xff0c;达到将非结构化数据转化成结构化数据的目的&#xff0c;但是该方法对应explode的内容是有非null限制的&#xff0c;否则就有可能造成数据缺失。 SE…

一体多面:哪有什么DO、BO、DTO,只不过是司空见惯的日常

欢迎大家关注公众号「JAVA前线」查看更多精彩分享文章&#xff0c;主要包括源码分析、实际应用、架构思维、职场分享、产品思考等等&#xff0c;同时欢迎大家加我微信「java_front」一起交流学习 1 分层疑问 无论DDD还是MVC模式构建项目&#xff0c;势必涉及到工程结构的分层&…

typora整理markdown笔记

效果 符号 快捷键 斜体 * * ctrlB(代表同时按) 加粗 ** ** ctrlI 竖线 > 超链接 清除样式 ctrl\ 图片 ![图片描述][图片绝对路径/相对路径] 如何在Typora中插入图像&#xff1f; ➊ 使用Markdown语法 &#xff08;不推荐&#xff0c;太慢&#xff09; ➋ 直接拷贝图…