• using System.Windows.Controls;
  • using System.Windows.Controls.Primitives;
  • using System.Windows.Media;
  • namespace Splash.WPF
  • {
  • public static class DataGridPlus
  • {
  • /// <summary>
  • /// 获取DataGrid控件单元格
  • /// </summary>
  • /// <param name="dataGrid">DataGrid控件</param>
  • /// <param name="rowIndex">单元格所在的行号</param>
  • /// <param name="columnIndex">单元格所在的列号</param>
  • /// <returns>指定的单元格</returns>
  • public static DataGridCell GetCell(this DataGrid dataGrid, int rowIndex, int columnIndex)
  • {
  • DataGridRow rowContainer = dataGrid.GetRow(rowIndex);
  • if (rowContainer != null)
  • {
  • DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);
  • DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
  • if (cell == null)
  • {
  • dataGrid.ScrollIntoView(rowContainer, dataGrid.Columns[columnIndex]);
  • cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
  • }
  • return cell;
  • }
  • return null;
  • }
  • /// <summary>
  • /// 获取DataGrid的行
  • /// </summary>
  • /// <param name="dataGrid">DataGrid控件</param>
  • /// <param name="rowIndex">DataGrid行号</param>
  • /// <returns>指定的行号</returns>
  • public static DataGridRow GetRow(this DataGrid dataGrid, int rowIndex)
  • {
  • DataGridRow rowContainer = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);
  • if (rowContainer == null)
  • {
  • dataGrid.UpdateLayout();
  • dataGrid.ScrollIntoView(dataGrid.Items[rowIndex]);
  • rowContainer = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);
  • }
  • return rowContainer;
  • }
  • /// <summary>
  • /// 获取父可视对象中第一个指定类型的子可视对象
  • /// </summary>
  • /// <typeparam name="T">可视对象类型</typeparam>
  • /// <param name="parent">父可视对象</param>
  • /// <returns>第一个指定类型的子可视对象</returns>
  • public static T GetVisualChild<T>(Visual parent) where T : Visual
  • {
  • T child = default(T);
  • int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
  • for (int i = 0; i < numVisuals; i++)
  • {
  • Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
  • child = v as T;
  • if (child == null)
  • {
  • child = GetVisualChild<T>(v);
  • }
  • if (child != null)
  • {
  • break;
  • }
  • }
  • return child;
  • }
  • }
  • }

遍历WPF DataGrid单元格的更多相关文章

  1. 关于C# wpf DataGrid单元格双击设置单元格内容

    1.我是使用了 visual stadio 2015, 用的C# WPF写个工具,但是发现wpf原生没有涉及表格的东西(类似 winform·的DataGridView),所以使用的是toolkit工 ...

  2. WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决

    原文:WPF学习笔记(8):DataGrid单元格数字为空时避免验证问题的解决 如下图,在凭证编辑窗体中,有的单元格不需要数字,但如果录入数字后再删除,会触发数字验证,单元格显示红色框线,导致不能执行 ...

  3. 基于1.3.3版本tooltip的datagrid单元格tip实现

    基于1.3.3版本tooltip的datagrid单元格tip实现 2013年05月25日 ⁄ datagrid ⁄ 共 6122字 ⁄ 评论数 26 ⁄ 被围观 7,033 views+ 文章目录 ...

  4. datagrid单元格格式化样式化

    本文体验datagrid单元格的格式化和样式化.   datagrid显示的DOM结构 <td field="code"> <div style="te ...

  5. WPF学习笔记(1):DataGrid单元格实现逐键过滤功能

    最近,开始学习WPF,其UI设计完全颠覆了传统的设计理念,为程序员提供了极大的自由发挥空间,让我为之惊叹,且为之着迷.然而,WPF在国内的热度却并不高,大部分贴子都是2012年以前的,出版的图书也很少 ...

  6. WPF中修改DataGrid单元格值并保存

    编辑DataGrid中的单元格的内容然后保存是非常常用的功能.主要涉及到的方法就是DataGrid的CellEditEnding  和BeginningEdit .其中BeginningEdit 是当 ...

  7. EasyUI datagrid单元格文本超出显示省略号,鼠标移动到单元格显示文本

    nowrap : true;  是前提 $('#×××').datagrid({ nowrap : true,//设置为true,当数据长度超出列宽时将会自动截取 }); 省略号样式: <sty ...

  8. easyui datagrid 单元格编辑(cell editing)

    demo中有row editing 项目中发现个cell editing,但是有bug,修改好了 主要实现功能:单击数据表格单元格,编辑单元格数据 js代码如下: $.extend($.fn.data ...

  9. EasyUI Datagrid 单元格编辑

    3:对于单元格的编辑 $('#Units').datagrid({ pageNumber: 1, //url: "@ViewBag.Domain/Paper/GetQuestionUnit& ...

随机推荐

  1. SQL一对多取子表最新记录的所有字段(ROW_NUMBER()OVER()函数的应用)

    ROW_NUMBER()OVER() 参数1:分组字段 PARTITION BY   ..,..,....  可选 参数2:排序字段 ORDER BY .. DESC  必须 实例: 根据Confir ...

  2. 小白两篇博客熟练操作MySQL 之 第一篇

    小白两篇博客熟悉操作MySQL  之   第一篇 一.概述 1. 什么是数据库? 答: 储存数据的仓库, 如: 在ATM的事例中创建的一个db 目录, 称为数据库 2. 什么是Mysql, Oracl ...

  3. 00105_UDP和TCP协议

    1.UDP协议 (1)UDP是User Datagram Protocol的简称,称为用户数据报协议: (2)UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接: (3)当一台 ...

  4. 【codeforces 779E】Bitwise Formula

    [题目链接]:http://codeforces.com/contest/779/problem/E [题意] 给你n个长度为m的二进制数 (有一些是通过位运算操作两个数的形式给出); 然后有一个未知 ...

  5. ZooKeeper学习总结(1)——ZooKeeper入门介绍

    1. 概述 Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务.名字服务.分布式同步.组服务等. 它有如下的一些特点: 简单 Zookeeper的核 ...

  6. hdu 3657 最大点权独立集变形(方格取数的变形最小割,对于最小割建图很好的题)

    转载:http://blog.csdn.net/cold__v__moon/article/details/7924269 /* 这道题和方格取数2相似,是在方格取数2的基础上的变形. 方格取数2解法 ...

  7. 数字统计(2010年NOIP全国联赛普及组)

    题目描述 请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数. 比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出 现 1 次 ...

  8. Pie POJ 3122 二分搜索

    Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17324   Accepted: 5835   Special Judge ...

  9. 记一个简单的webpack.config.js

    module.exports = { entry: './basic/app.js', output: { path: './assets/', filename: '[name].bundle.js ...

  10. HPC2013小节

    对于高性能计算,三个分支能耗.高性能.容错.下面我对会议的主要内容作一个小节,很多问题也是不求甚解. 下面针对大会内容,我主要总结如下,会有了解不周的地方,欢迎讨论:大会主要报告分成3个方向,1.基础 ...