DataGrid 得到DataGridRow 和DataGridColumn

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

DataGrid 得到DataGridRow 和DataGridColumn的相关文章

WPF DataGrid显格式

Guide to WPF DataGrid formatting using bindings Peter Huber SG, 25 Nov 2013 CPOL    4.83 (13 votes) 1 2 3 4 5 4.83/5 - 13 votes μ 4.83, σa 0.93 [?] Rate: Add a reason or comment to your vote: x Votes of 3 or less require a comment Using Style and Bin

WPF DataGrid Custommization using Style and Template

转载:http://www.codeproject.com/Articles/586132/WPF-DataGrid-Custommization-using-Style-and-Templa WPF DataGrid Custommization using Style and Template Hiren Khirsaria, 2 May 2013 CPOL customize DataGridRowHeader, DataGridColumnHeader, DataGridCell, Da

WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式

WPF:设置DataGrid中DataGridColumn列的普通样式和编辑样式 时间:2012-02-01 20:28来源:博客园 作者:刘圆圆 点击:1570次 0:DataGridColumn类型的继承树 DataGridColumn的派生类: 一般情况下DataGridBoundColumn和DataGridComboBoxColumn足以满足多数列的样式,如果需要自定义列样式,则可以使用DataGridTemplateColumn类型. 在设置列编辑样式之前,我们先创建一个简单的Dat

WPF DataGrid 鼠标双击选中的DataGridRow及Row数据

设置DataGrid的MouseDoubleClick事件 代码 //DataGrid鼠标双击事件 Private void dataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if(this.dataGrid.SelectedIndex == -1) { return; } DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.Contain

DataGrid 如何得到DataGridRow 和DataGridCell 对象

第一行为不可编辑  DataGridRow row = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(0);             if (row == null)             {                 dataGrid1.UpdateLayout();                 row = (DataGridRow)dataGrid1.ItemContainerGenerator.

C# WPF DataGrid 隔行变色及内容居中对齐

C# WPF DataGrid 隔行变色及内容居中对齐. dqzww NET学习0 先看效果: 前台XAML代码: <!--引入样式文件--> <Window.Resources>        <ResourceDictionary>            <ResourceDictionary.MergedDictionaries>                <ResourceDictionary  Source="/Css/Data

WPF之DataGrid应用

前几天打算尝试下DataGrid的用法,起初以为应该很简单,可后来被各种使用方法和功能实现所折磨.网络上的解决方法太多,但也太杂.没法子,我只好硬着头皮阅览各种文献资料,然后不断的去尝试,总算小有成果.因此,把我学到的和大家分享一下,相信这篇文章会让你再很短的时间内学会DataGrid的大部分主要功能,而且很多难点都可以在里面找到解决方案. 由于涉及的应用比较多,所以篇幅会很长.但可以确保各个版块相互独立,总共4个部分 1.数据绑定 2.DataGrid的增改删功能 3.DataGrid的分页实

Windows Community Toolkit 4.0 - DataGrid - Overview

原文:Windows Community Toolkit 4.0 - DataGrid - Overview 概述 Windows Community Toolkit 4.0 于 2018 月 8 月初发布:Windows Community Toolkit 4.0 Release Note. 4.0 版本相较于 3.0,增加了 DataGrid 等控件,Sample App 支持了 Fluent Design 设计和明暗两种风格,修复了遗留的控件 BUG,接下来我们主要看一下 DataGrid

Windows Community Toolkit 4.0 - DataGrid - Part03

概述 在上面一篇 Windows Community Toolkit 4.0 - DataGrid - Part02 中,我们针对 DataGrid 控件的 Utilities 部分做了详细分享.而在本篇,我们会对控件中最重要的 DataGrid 文件夹中的类做详细的分享. 下面是 Windows Community Toolkit Sample App 的示例截图和 code/doc 地址: Windows Community Toolkit Doc - DataGrid Windows Co