zoukankan      html  css  js  c++  java
  • WPF:获取DataGrid控件单元格DataGridCell


    /* ----------------------------------------------------------
    文件名称:DataGridPlus.cs

    作者:秦建辉

    MSN:splashcn@msn.com
    QQ:36748897

    博客:http://blog.csdn.net/jhqin

    开发环境:
    Visual Studio V2010
    .NET Framework 4 Client Profile

    版本历史:
    V1.0 2012年06月07日
    WPF DataGrid控件扩展方法

    参考资料:
    http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b7299e55-92e2-4a6b-8987-869fef8f22eb/
    ------------------------------------------------------------ */
    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;
    }
    }
    }

  • 相关阅读:
    男人要知道的40条忠告
    利用xtraBackup实现不停master服务做主从同步
    MY SQL 知识
    房价与阶级
    SQL Server数据库级别触发器
    mysql 5.7开启并行复制
    SQL Server 查出未提交事务(长事务)SQL
    开源数据集
    telnet
    Zend Studio使用综述
  • 原文地址:https://www.cnblogs.com/sjqq/p/8335318.html
Copyright © 2011-2022 走看看