WPF Datagrid Header数据绑定,表头复选框实现全选、全否、部分选中,根据条目动态变化

制作一个根表头为CheckBox可全选、全不选的列表,且可根据条目自动调整CheckBox的状态(选中、不选、部分选中)。

本来是想用DataGrid做一个CheckBox的列用于勾选其中的某些行,当时做出来之后想着添加一个全选、全否的功能。做两个按钮觉得太丑,就想着在标题栏做一个CheckBox实现此功能。开始不用会用模板,网上查了些资料可以用以下方式实现:

1、通过DatGridTemplateColumn修改表头模板实现

                <DataGridTemplateColumn><DataGridTemplateColumn.HeaderTemplate><DataTemplate><CheckBox x:Name="CkB1" Click="Button_Click_2_Header" Tag="{Binding A4, Mode=TwoWay}" IsThreeState="True"></CheckBox></DataTemplate></DataGridTemplateColumn.HeaderTemplate><DataGridTemplateColumn.CellTemplate><DataTemplate><CheckBox IsChecked="{Binding A4, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" Click="Button_Click_2_Body"></CheckBox></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>

2、根据DataGridCheckBoxColumn修改表头模板实现

                <DataGridCheckBoxColumn ><DataGridCheckBoxColumn.HeaderTemplate ><DataTemplate><CheckBox Click="CheckBox_Click_3_Header"></CheckBox></DataTemplate></DataGridCheckBoxColumn.HeaderTemplate><DataGridCheckBoxColumn.ElementStyle><Style TargetType="CheckBox"><Setter Property="IsChecked" Value="{Binding A5}"></Setter></Style></DataGridCheckBoxColumn.ElementStyle></DataGridCheckBoxColumn>

实现显示之后可根据Click、Checked、UnCkecked事件控制全选与全否。

但是如何实现表头状态的自动调整没啥思路,网上搜了一下资料:

以下两种实现方式:

1、给表头控件添加空间名称,使用时根据名称找到控件,再根据动作调整控件状态。

如查找“CKB1“控件,通过VisualTreeHelper

        CheckBox cb = GetVisualChild<CheckBox>(this.TestDG, v => v.Name == "CkB1");
        public T GetVisualChild<T>(DependencyObject parent, Func<T, bool> predicate) where T : Visual{int numVisuals = VisualTreeHelper.GetChildrenCount(parent);for (int i = 0; i < numVisuals; i++){DependencyObject v = (DependencyObject)VisualTreeHelper.GetChild(parent, i);T child = v as T;if (child == null){child = GetVisualChild<T>(v, predicate);if (child != null){return child;}}else{if (predicate(child)){return child;}}}return null;}

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

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

相关文章

pytorch里常用操作(持续更新)

对不起我脑子不太记事儿每次变换都得想想想所以干脆汇总一下算了&#xff0c;当然也有一些不是torch包里面的但是没有关系hhh 官方文档里有一堆不太常用的&#xff0c;这里整理的都是自己比较常用的 张量操作 torch.tensor&#xff1a;从Python列表或NumPy数组创建张量 torc…

idea使用debug无法启动,使用run可以启动

1、将调试断点清除 使用快捷键ctrl shift F8&#xff0c;将勾选的选项去除即可 2、Error running SampleApplication: Command line is too long. Shorten command line for SampleApplication or also for Spring Boot default configuration&#xff0c;报这种错误&#x…

vr火灾逃生安全科普软件开展消防突击教育安全有效

VR火灾逃生自救虚拟体验是一种利用虚拟现实技术来模拟火灾逃生自救场景的教育工具。以下是这个体验的几个优点&#xff1a;VR消防安全体验馆的出现&#xff0c;为城市的安全教育开辟了新的途径。这种创新的体验方式&#xff0c;能够让市民在模拟的火灾场景中学习并掌握消防安全…

前端面试基础面试题——10

1. 说说你对 promise 的了解 2.解构赋值及其原理 3.箭头函数需要注意的地方 4.箭头函数和普通函数有什么区别 5.ES6 都有什么 Iterator 遍历器 6.jQuery 一个对象可以同时绑定多个事件&#xff0c;这是如何实现的&#xff1f; 7.jQuery 库中的 $() 是什么&#xff1f; 8…

tcp/ip协议2实现的插图,数据结构2 (9 - 章)

&#xff08;20&#xff09; 20 九章1 IP选项处理 ip_dooptions &#xff08;21&#xff09; 21 九章2 IP选项处理 ip_rtaddr,save_rte,ip_srcroute与结构体 &#xff08;22&#xff09;九章3 IP选项处理 ip_pcbopts, ip_insertoptions , iptime 与结构 &#xff08;23&#xf…

安装 mysql

gpt: 要在 Debian 11 上安装 MySQL 数据库服务器&#xff0c;您可以使用以下步骤&#xff1a; 1. **更新软件包列表**&#xff1a;在安装任何软件之前&#xff0c;始终建议首先更新软件包列表&#xff0c;以确保获取最新的软件包信息。在终端中运行以下命令&#xff1a; bash…

课时4作业1

Description 输入一个整型数&#xff0c;判断是否是对称数&#xff0c;如果是&#xff0c;输出yes&#xff0c;否则输出no&#xff0c;不用考虑这个整型数过大&#xff0c;int类型存不下&#xff0c;不用考虑负值&#xff1b; 例如 12321是对称数&#xff0c;输出yes&#xf…

过滤器(Filter)和拦截器(Interceptor)有什么不同?

过滤器&#xff08;Filter&#xff09;和拦截器&#xff08;Interceptor&#xff09;是用于处理请求和响应的中间件组件&#xff0c;但它们在实现方式和应用场景上有一些不同。 实现方式: 过滤器是Servlet规范中定义的一种组件&#xff0c;通常以Java类的形式实现。过滤器通过在…

编译添加了ALPHA开发板的NXP官方uboot

一. 简介 之前文章学习了 如何在NXP&#xff08;恩智浦&#xff09;官方 uboot 中添加正点原子的 ALPHA 开发板。 如何在NXP&#xff08;恩智浦&#xff09;官方 uboot 中添加正点原子的 ALPHA 开发板&#xff0c;文章如下&#xff1a; 向NXP官方uboot添加Nand版开发板-CSDN博…

【webrtc 】FEC 1: 音频RED rfc2198及视频ULPFEC的RED封装

1 参考和引用 M79 代码。 ULPFEC报文构建流程 与大神的分析: WebRTC-FEC协议总结 一致 CrystalShaw 大神的文章 ULPFEC在WebRTC中的实现 WebRTC研究:FEC之RED封装 本文是大神们文章和代码的学习笔记。red封包(rfc2189)1.1 RED(Redundant Coding) 封装 Ulpfec 非均等保护前向纠…

HarmonyOS云开发基础认证---练习题二

【判断题】 2/2 Serverless是云计算下一代的默认计算范式。 正确(True) 【判断题】 2/2 接入认证服务后&#xff0c;用户每次收到验证码短信都需要开发者买单。 错误(False) 【判断题】 2/2 认证服务手机号码登录需要填写国家码。 正确(True) 【判断题】 2/2 在Cloud Functi…

大数据Flink(九十八):SQL函数的归类和引用方式

文章目录 SQL函数的归类和引用方式 一、SQL 函数的归类

Vue_Bug Failed to fetch extension, trying 4 more times

Bug描述&#xff1a; 启动electron时出现Failed to fetch extension, trying 4 more times的问题 解决方法&#xff1a; 去src/background.js文件中进行代码注释工作 app.on(ready, async() > {// if (isDevelopment && !process.env.IS_TEST) {// // Install V…

小程序长期订阅

准备工作 ::: tip 管理后台配置 小程序类目&#xff1a;住建&#xff08;硬性要求&#xff09; 功能-》订阅消息-》我的模版 申请模版&#xff1a;1、预约进度通知 2、申请结果通知 3、业务办理进度提醒 ::: 用户订阅一次后&#xff0c;可长期下发多条消息。目前长期性订阅…

【SA8295P 源码分析 (一)】41 - SA8295所有镜像位置、拷贝脚本、生成QFIL包 及 Fastboot 下载命令介绍

【SA8295P 源码分析】41 - SA8295所有镜像位置、拷贝脚本、生成QFIL包 及 Fastboot 下载命令介绍 一、SA8295 各镜像位置二、SA8295 QNX 侧镜像拷贝脚本三、SA8295 Android 侧镜像拷贝脚本四、使用QFIL 下载整包五、Fastboot 下载命令整理系列文章汇总见:《【SA8295P 源码分析…

STM32如何使用PWM?

一&#xff1a;PWM介绍 PWM 是 Pulse Width Modulation 的缩写&#xff0c;中文意思就是脉冲宽度调制&#xff0c;简 称脉宽调制。它是利用微处理器的数字输出来对模拟电路进行控制的一种非常有 效的技术&#xff0c;其控制简单、灵活和动态响应好等优点而成为电力电子技术最广…

Vue之Vue的介绍安装开发实例生命周期钩子

博主心得&#xff1a; keyup必须与change一起使用v-on.click可以直接写成clickclick“setVal”里的setVal换成数字之后有惊喜VS Code是真的狗&#xff0c;一些报错根本不会直接显示总结&#xff1a;VS code太狗了 1.vue介绍 1.1 什么是vue vue是一个构建用户界面UI的渐进式jav…

【配置环境】SQLite数据库安装和编译以及VS下C++访问SQLite数据库

一&#xff0c;环境 Windows 11 家庭中文版&#xff0c;64 位操作系统, 基于 x64 的处理器SQLite - 3.43.2Microsoft Visual Studio Community 2022 (64 位) - Current 版本 17.5.3 二&#xff0c;SQLite简介 简要介绍 SQLite&#xff08;Structured Query Language for Lite&a…

Babel 在Powershell 上无法查看版本

ES6 模块语法不能应用在ES5环境中 (ES6模块化语法不能在node.js中执行)&#xff0c;此时需要Babel进行转码 通过npm install -g babel-cli 安装好后&#xff0c;想通过 babel --version产看版本。但是无法查看 首先&#xff0c;我们要以管理员方式运行PowerShell&#xff0c;&…

密码学二: md5 网站服务器与用户通信过程 ca原理 签名原理 Flame 病毒原理

md5被破解? MD5&#xff08;Message Digest Algorithm 5&#xff09;是一个较早的哈希函数&#xff0c;但由于其弱点和漏洞&#xff0c;它已经被认为不再适合用于安全性要求较高的应用。MD5的一些安全性问题包括&#xff1a; 碰撞攻击&#xff1a; MD5已经被证明容易受到碰撞攻…