1. 转载:http://blog.csdn.net/jhqin/article/details/7645357
  2. /* ----------------------------------------------------------
  3. 文件名称:DataGridPlus.cs
  4. 作者:秦建辉
  5. MSN:splashcn@msn.com
  6. QQ:36748897
  7. 博客:http://blog.csdn.net/jhqin
  8. 开发环境:
  9. Visual Studio V2010
  10. .NET Framework 4 Client Profile
  11. 版本历史:
  12. V1.0    2012年06月07日
  13. WPF DataGrid控件扩展方法
  14. 参考资料:
  15. http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b7299e55-92e2-4a6b-8987-869fef8f22eb/
  16. ------------------------------------------------------------ */
  17. using System.Windows.Controls;
  18. using System.Windows.Controls.Primitives;
  19. using System.Windows.Media;
  20. namespace Splash.WPF
  21. {
  22. public static class DataGridPlus
  23. {
  24. /// <summary>
  25. /// 获取DataGrid控件单元格
  26. /// </summary>
  27. /// <param name="dataGrid">DataGrid控件</param>
  28. /// <param name="rowIndex">单元格所在的行号</param>
  29. /// <param name="columnIndex">单元格所在的列号</param>
  30. /// <returns>指定的单元格</returns>
  31. public static DataGridCell GetCell(this DataGrid dataGrid, int rowIndex, int columnIndex)
  32. {
  33. DataGridRow rowContainer = dataGrid.GetRow(rowIndex);
  34. if (rowContainer != null)
  35. {
  36. DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);
  37. DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
  38. if (cell == null)
  39. {
  40. dataGrid.ScrollIntoView(rowContainer, dataGrid.Columns[columnIndex]);
  41. cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(columnIndex);
  42. }
  43. return cell;
  44. }
  45. return null;
  46. }
  47. /// <summary>
  48. /// 获取DataGrid的行
  49. /// </summary>
  50. /// <param name="dataGrid">DataGrid控件</param>
  51. /// <param name="rowIndex">DataGrid行号</param>
  52. /// <returns>指定的行号</returns>
  53. public static DataGridRow GetRow(this DataGrid dataGrid, int rowIndex)
  54. {
  55. DataGridRow rowContainer = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);
  56. if (rowContainer == null)
  57. {
  58. dataGrid.UpdateLayout();
  59. dataGrid.ScrollIntoView(dataGrid.Items[rowIndex]);
  60. rowContainer = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(rowIndex);
  61. }
  62. return rowContainer;
  63. }
  64. /// <summary>
  65. /// 获取父可视对象中第一个指定类型的子可视对象
  66. /// </summary>
  67. /// <typeparam name="T">可视对象类型</typeparam>
  68. /// <param name="parent">父可视对象</param>
  69. /// <returns>第一个指定类型的子可视对象</returns>
  70. public static T GetVisualChild<T>(Visual parent) where T : Visual
  71. {
  72. T child = default(T);
  73. int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
  74. for (int i = 0; i < numVisuals; i++)
  75. {
  76. Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
  77. child = v as T;
  78. if (child == null)
  79. {
  80. child = GetVisualChild<T>(v);
  81. }
  82. if (child != null)
  83. {
  84. break;
  85. }
  86. }
  87. return child;
  88. }
  89. }
  90. }

WPF:获取DataGrid控件单元格DataGridCell的更多相关文章

  1. WPF 获取DataGrid 控件选中的单元格信息

    获取 DataGrid 选中的单元格的信息DataGridCellInfo cell_Info = this.studentTable.SelectedCells[0]; studentTableIt ...

  2. wpf 获取DataGrid某一个单元格,设置此单元格ToolTip内容和背景颜色

    public void GetCell()        {            for (int i = 0; i < this.datagrid1.Items.Count; i++)    ...

  3. WPF的DataGrid控件从excel里复制数据然后粘贴

    WPF的DataGrid控件不能像winform的DataGridView控件一样,支持值的粘贴.WPF的DataGrid控件本质上是跟数据绑定联系在一起,所以需要进行复制粘贴的操作,可以在wpf里用 ...

  4. WPF 4 DataGrid 控件(自定义样式篇)

    原文:WPF 4 DataGrid 控件(自定义样式篇)      在<WPF 4 DataGrid 控件(基本功能篇)>中我们已经学习了DataGrid 的基本功能及使用方法.本篇将继续 ...

  5. WPF 4 DataGrid 控件(进阶篇一)

    原文:WPF 4 DataGrid 控件(进阶篇一)      上一篇<WPF 4 DataGrid 控件(自定义样式篇)>中,我们掌握了DataGrid 列表头.行表头.行.单元格相关的 ...

  6. WPF 4 DataGrid 控件(基本功能篇)

    原文:WPF 4 DataGrid 控件(基本功能篇)      提到DataGrid 不管是网页还是应用程序开发都会频繁使用.通过它我们可以灵活的在行与列间显示各种数据.本篇将详细介绍WPF 4 中 ...

  7. WPF 4 DataGrid 控件(进阶篇二)

    原文:WPF 4 DataGrid 控件(进阶篇二)      上一篇<WPF 4 DataGrid 控件(进阶篇一)>中我们通过DataGridTemplateColumn 类自定义编辑 ...

  8. WPF获取某控件的位置,也就是偏移量

    原文:WPF获取某控件的位置,也就是偏移量 此段示例在MSDN中可见.XAML代码如下: <Window xmlns="http://schemas.microsoft.com/win ...

  9. WPF 自定义DataGrid控件样式

    内容转自https://www.cnblogs.com/xiaogangqq123/archive/2012/05/07/2487166.html 一.DataGrid基本样式(一) 小刚已经把Dat ...

随机推荐

  1. Swiper 滑动

    1.http://www.swiper.com.cn/download/  下载Swiper.JS  Swiper.CSS 2.引入项目,添加html <div class="cont ...

  2. FormData 上传多种格式的文件

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. 转:【Java并发编程】之二:线程中断(含代码)

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/17091267 使用interrupt()中断线程 当一个线程运行时,另一个线程可以调用对应 ...

  4. KVM虚拟化主机安装

    KVM虚拟化主机安装 最小化安装CentOS6.X或者CentOS7.X,RHEL6.X以上系列建议建议选择安装最小虚拟化主机 如果要安装桌面可以先选择最小化虚拟主机,再选择Gnome桌面包 安装过程 ...

  5. 201521123063 《JAVA程序设计》 第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 上周学习了继承和多态,满足is-a条件,但是发现会导致继承的滥用,如果只是但以的 ...

  6. 201521123037 《Java程序设计》第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 接口: 接口简而言之是方法声明和常量值的集合,接口中所有的方法默认为public ...

  7. 201521123040《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周学习了类的继承,包括子类父类的概念还有extends关键字,super关键字.继承与代码 ...

  8. 预防黑客入侵 防黑必学的cmd命令vs网络安全

    这些命令又可*********三类:网络检测(如ping).网络连接(如telnet)和网络配置(如netsh).前面两种相对简单,本文只介绍两个网络配置工具.自带的关于网络的命令行工具很多,比如大家 ...

  9. 201521123004 《Java程序设计》第13周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 协议.IP.域名.端口号 协议:网络中为了进行数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则 ...

  10. 201521123009 《Java程序设计》第11周学习总结

    1. 本周学习总结 2. 书面作业 本次PTA作业题集多线程 Q1:互斥访问与同步访问 完成题集4-4(互斥访问)与4-5(同步访问) 1.1 除了使用synchronized修饰方法实现互斥同步访问 ...