WPF Datagrid控件,获取某一个单元格中的控件
在WPF应用程序中,比如需要获取特定 DataGrid 单元格中的 TextBlock 控件,可以通过访问 DataGridRow 和 DataGridCell 对象。以下是一个例子,展示如何获取 DataGrid 的第二行第一列中的 TextBlock 控件,并修改其属性。
1. 在XAML中定义DataGrid和Button
在XAML文件中定义一个 DataGrid 控件和一个 Button 控件,确保使用 DataGridTemplateColumn 来指定数据模板。
<Window x:Class="YourNamespace.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Title="MainWindow" Height="450" Width="800"><Grid><StackPanel><Button Content="Change Background Color" Click="ChangeBackgroundColor_Click" Margin="10"/><DataGrid x:Name="dataGrid" AutoGenerateColumns="False" Margin="10"><DataGrid.Columns><DataGridTemplateColumn Header="Column 1"><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock Text="{Binding Column1}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Header="Column 2"><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock Text="{Binding Column2}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn><DataGridTemplateColumn Header="Column 3"><DataGridTemplateColumn.CellTemplate><DataTemplate><TextBlock Text="{Binding Column3}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn></DataGrid.Columns></DataGrid></StackPanel></Grid>
</Window>
2. 在后台代码中处理Button点击事件
在后台代码(C#)中,添加事件处理程序以在Button点击时获取第二行第一列的 TextBlock 并修改其背景色。
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;namespace YourNamespace
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();// 填充示例数据dataGrid.ItemsSource = new List<Data>{new Data { Column1 = "Row1 Col1", Column2 = "Row1 Col2", Column3 = "Row1 Col3" },new Data { Column1 = "Row2 Col1", Column2 = "Row2 Col2", Column3 = "Row2 Col3" }};}private void ChangeBackgroundColor_Click(object sender, RoutedEventArgs e){// 获取第二行(索引为1)和第一列(索引为0)DataGridRow row = GetDataGridRow(1);if (row != null){DataGridCell cell = GetDataGridCell(row, 0);if (cell != null){// 获取单元格中的TextBlockTextBlock textBlock = FindChild<TextBlock>(cell);if (textBlock != null){textBlock.Background = Brushes.Red; // 设置背景色为红色}}}}private DataGridRow GetDataGridRow(int index){var row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(index);if (row == null){dataGrid.ScrollIntoView(dataGrid.Items[index]);row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(index);}return row;}private DataGridCell GetDataGridCell(DataGridRow row, int columnIndex){if (row != null){var presenter = FindChild<DataGridCellsPresenter>(row);if (presenter == null){row.ApplyTemplate();presenter = FindChild<DataGridCellsPresenter>(row);}var cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);if (cell == null){row.ScrollIntoView(row.Item, dataGrid.Columns[columnIndex]);cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);}return cell;}return null;}private T FindChild<T>(DependencyObject parent) where T : DependencyObject{for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++){var child = VisualTreeHelper.GetChild(parent, i);if (child is T){return (T)child;}var result = FindChild<T>(child);if (result != null){return result;}}return null;}}public class Data{public string Column1 { get; set; }public string Column2 { get; set; }public string Column3 { get; set; }}
}
3. 运行程序
运行程序后,点击按钮,你会看到DataGrid中第二行第一列的 TextBlock 背景色变为红色。
说明
- GetDataGridRow: 通过索引获取特定的
DataGridRow。 - GetDataGridCell: 通过
DataGridRow和列索引获取特定的DataGridCell。 - FindChild: 在单元格内容中查找
TextBlock并修改其背景色。
相关文章:
WPF Datagrid控件,获取某一个单元格中的控件
在WPF应用程序中,比如需要获取特定 DataGrid 单元格中的 TextBlock 控件,可以通过访问 DataGridRow 和 DataGridCell 对象。以下是一个例子,展示如何获取 DataGrid 的第二行第一列中的 TextBlock 控件,并修改其属性。 1. 在XAML中…...
P10838 『FLA - I』庭中有奇树
前言 本题解较为基础,推导如何得出二分解题思路。 题目大意 给出无根带权树,双方采取最佳策略,求节点S->T的最短路。 有两种操作: 我方至多可以使用一次传送,花费k元从a传送到b(ab不能相邻…...
WebRTC简介
WebRTC简介 WebRTC(Web Real-Time Communication)是一项开源的实时通信技术,它允许网页浏览器进行实时语音、视频和数据共享通信,而无需安装额外的插件或应用程序。WebRTC的出现极大地简化了实时通信的开发和部署过程,…...
一套直播系统带商城源码 附搭建教程
本站没搭建测试过,有兴趣的自己折腾了,内含教程! 功能介绍: 礼物系统:普通礼物、豪华礼物、热门礼物、守护礼物、幸运礼物 提现方式:统一平台提现日期及方式,方便用户执行充值提现操作 连麦…...
Netty 总结与补充(十)
简单介绍一下 Netty?你为什么会用到Netty?说说你对Netty的认识?为什么选用Netty来做通信框架? Netty 是一个高性能、异步事件驱动的 NIO 框架,它提供了对 TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架…...
循环实现异步变同步的问题
一、背景 在开发中遇到在循环中调用异步接口的问题,导致页面渲染完成时,没有展示接口返回后拼接的数组数据。二、问题 在代码中使用了map进行循环,导致调用接口的时候处于异步。this.form.list.map(async el>{el.fileList [];if(el.pic…...
测试GPT4o分析巴黎奥运会奖牌数据
使用GPT4o快速调用python代码,生成数据图表 测试GPT4o分析巴黎奥运会奖牌数据 测试GPT4o分析巴黎奥运会奖牌数据 1.首先我们让他给我们生成下当前奥运奖牌数 2.然后我们直接让GPT帮我们运行python代码,并生成奥运会奖牌图表 3.我们还可以让他帮我们…...
TF卡(SD NAND)参考设计和使用提示
目录 电路设计 Layout 设计说明 贴片注意事项 电路设计 1、参考电路: R1~R5 (10K-100 kΩ)是上拉电阻,当SD NAND处于高阻抗模式时,保护CMD和DAT线免受总线浮动。 即使主机使用SD NAND SD模式下的1位模式,主机也应通过上拉电…...
电源芯片负载调整率测试方法、原理以及自动化测试的优势-纳米软件
在芯片设计研发领域,负载调整率作为稳压电源芯片的关键性能指标,直接关系到芯片的稳定性和可靠性,因此其测试和优化显得尤为重要。以下是对负载调整率测试原理、方法以及使用ATECLOUD-IC芯片测试系统优势的进一步阐述: 负载调整率…...
C++威力强大的助手 --- const
Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: C之旅 const是个奇妙且非比寻常的东西,博主从《Effective C》一书中认识到关于const更深层次的理解,写此博客进行巩固。 &#x…...
测试环境搭建整套大数据系统(十八:ubuntu镜像源进行更新)
镜像源更新为清华源 报错显示 解决方案 做好备份 cp /etc/apt/sources.list /etc/apt/sources.list.bak查看配置信息 sudo vim /etc/apt/sources.listsudo sed -i s/cn.archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt update...
第128天:内网安全-横向移动IPCATSC 命令Impacket 套件CS 插件全自动
环境部署 案例一: 域横向移动-IPC-命令版-at&schtasks 首先是通过外网web访问到win2008,获得了win2008的权限,这一步不做演示 因为里面的主机都不出网,所以只能利用win2008进行正向或者反向连接 信息收集 域内用户信息&…...
记录一次学习过程(msf、cs的使用、横向渗透等等)
目录 用python搭建一个简单的web服务器 代码解释 MSF msfvenom 功能 用途 查看payloads列表 msfconsole 功能 用途 msfvenom和msfconsole配合使用 来个例子 msf会话中用到的一些命令 在windows中net user用法 列出所有用户账户 显示单个用户账户信息 创建用户账…...
C#中DataTable新增列、删除列、更改列名、交换列位置
C#中DataTable新增列、删除列、更改列名、交换列位置 一、新增列 1.1、新增列 /*新增列*/ dataTable.Columns.Add("列名称", Type.GetType("数据类型")); /*比如添加【name】列,string类型的内容*/ dataTable.Columns.Add("name&…...
C#编写多导联扫描式的波形图Demo
本代码调用ZedGraph绘图框架,自己先安装好ZedGraph环境,然后拖一个zedGraphControl控件就行了,直接黏贴下面代码 基本代码显示 using System; using System.Windows.Forms; using ZedGraph; using System.Timers;namespace ECGPlot {public…...
QT网络编程
Qt 给用户提供了网络编程的接口,包括TCP、UDP、HTTP三种协议的API以及各种类,可以了解一下。 而在 QT 中想要使用网络编程,必须在pro文件中添加 network 模块,否则无法包含网络编程所需的头文件。 UDP UDP是传输层的协议&#…...
Django ASGI服务
1. ASGI简介 在Django中, ASGI(Asynchronous Server Gateway Interface)的引入使得Django应用能够支持异步编程. 从Django 3.0开始, Django就增加了对ASGI的支持, 但直到Django 3.1才正式推荐在生产环境中使用ASGI. ASGI是一个用于Python的异步Web服务器的标准接口, 它允许你运…...
Servlet(2)
1、WebServlet 这个注解可以用来修饰一个Servlet类,可以简化配置,替代Web.xml中 的servlet配置 ①value属性 表示指定某个url-pattern ②urlPatterns属性 表示接受多个不同的url-pattern,多个值写在一对{}中,逗号分隔 补充;url-pattern…...
电竞玩家的云端盛宴!四大云电脑平台:ToDesk、顺网云、青椒云、极云普惠云实测大比拼
本文目录 一、云电脑概念及市场需求二、云电竞性能测试2.1 ToDesk云电脑2.2 顺网云2.3 青椒云2.4 极云普惠云电脑 三、四大云电脑平台综合配置对比3.1 CPU处理器3.2 GPU显卡3.3 内存 四、总结 一、云电脑概念及市场需求 在数字化时代的推动下,云计算技术日益成熟&a…...
基础复习(反射、注解、动态代理)
反射 反射,指的是加载类的字节码到内存,并以编程的方法解刨出类中的各个成分(成员变量、方法、构造器等)。 1.获取类的字节码 (3种方式) public class Test1Class{public static void main(String[] arg…...
大规模数据清洗效率提升300%的Polars 2.0实战方案(内存泄漏避坑全图谱)
第一章:Polars 2.0大规模数据清洗的范式跃迁 Polars 2.0 不再是 Pandas 的轻量替代品,而是一次面向现代硬件与真实数据工程场景的底层重构。其核心跃迁体现在三重解耦:计算图与执行引擎分离、内存布局与逻辑 Schema 解耦、以及 I/O 层与处理层…...
OrangepiZERO3驱动USB摄像头的记录
关于orangepiZERO3的官方文档: http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_Zero_3 按照里面有关的步骤进行操作,但是可能会有一点小问题,特此记录一下 第一步和第二步一致,不多说。 第三步: 我的命令…...
一、RuoYi-Vue3项目模块化架构与二次开发实战
1. RuoYi-Vue3模块化架构深度解析 第一次接触RuoYi-Vue3时,最让我惊艳的就是它清晰的模块化设计。这个基于Spring BootVue3的前后端分离框架,通过六大核心模块的巧妙组合,既保证了功能完整性,又为二次开发留足了空间。就像搭积木一…...
MySQL高频面试题(2026最新版):覆盖90%考点,小白也能直接背
很多开发者备考时,要么盲目刷题、记不住重点,要么只背答案、不懂原理,面试时被面试官追问一句就卡壳。其实MySQL面试没有那么复杂,核心考点就那么多,只要吃透高频题、理解底层逻辑,就能从容应对。本文整理了…...
网页时光机:如何永久保存消失的网页内容
网页时光机:如何永久保存消失的网页内容 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextension 你是否遇到过这样…...
Pixel Epic效果实测:不同逻辑发散概率下技术路线图描述准确率对比
Pixel Epic效果实测:不同逻辑发散概率下技术路线图描述准确率对比 1. 测试背景与目的 Pixel Epic作为一款创新型研究报告辅助工具,其核心功能"贤者之智"模块采用了独特的逻辑发散机制。本次测试旨在评估不同逻辑发散概率设置对技术路线图描述…...
OpenClaw安全指南:千问3.5-27B本地化执行权限管控
OpenClaw安全指南:千问3.5-27B本地化执行权限管控 1. 为什么需要OpenClaw安全管控? 去年冬天的一个深夜,我被一阵急促的键盘敲击声惊醒。走进书房时,发现OpenClaw正在自动执行我三天前测试的爬虫脚本——由于没有设置运行时间限…...
OpenClaw替代方案:当Qwen3-4B不可用时降级策略
OpenClaw替代方案:当Qwen3-4B不可用时降级策略 1. 为什么需要降级策略 上周三凌晨3点,我的OpenClaw自动化脚本突然停止了工作。原本定时执行的周报生成任务卡在了模型调用环节——Qwen3-4B服务因网络波动暂时不可用。这次意外让我意识到:依…...
记录模式 vs Lombok vs Record类,全维度性能与可维护性对比测试(含JMH压测数据)
第一章:Java记录模式的核心概念与演进背景Java记录模式(Record Patterns)是JDK 21中正式引入的预览特性(JEP 440),并在JDK 22中进一步增强(JEP 441),旨在为结构化数据解构…...
程序员体检报告暗语:甲状腺结节=加班等级说明书
一、当体检报告出现“甲状腺结节”翻开软件测试工程师的体检报告,“甲状腺结节”已成为高频词。医学定义中,甲状腺结节是甲状腺细胞异常增生形成的肿块,随吞咽移动,临床检出率超20%(数据来源:2023年《中国甲…...
