zoukankan      html  css  js  c++  java
  • DataGrid 獲取 制定 row Col 單元格

    public static class DataGridHelper
        {
            /// <summary>         
            /// Gets the visual child of an element         
            /// </summary>         
            /// <typeparam name="T">Expected type</typeparam>         
            /// <param name="parent">The parent of the expected element</param>         
            /// <returns>A visual child</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;
            }
     
            /// <summary>
            /// Gets the specified cell of the DataGrid
            /// </summary>
            /// <param name="grid">The DataGrid instance</param>
            /// <param name="row">The row of the cell</param>
            /// <param name="column">The column index of the cell</param>
            /// <returns>A cell of the DataGrid</returns>
            public static DataGridCell GetCell(this DataGrid grid, DataGridRow row, int column)
            {
                if (row != null)
                {
                    DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row);
                    if (presenter == null)
                    {
                        grid.ScrollIntoView(row, grid.Columns[column]);
                        presenter = GetVisualChild<DataGridCellsPresenter>(row);
                    }
                    DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column);
                    return cell;
                }
                return null;
            }
            /// <summary>
            /// Gets the specified cell of the DataGrid
            /// </summary>
            /// <param name="grid">The DataGrid instance</param>
            /// <param name="row">The row index of the cell</param>
            /// <param name="column">The column index of the cell</param>
            /// <returns>A cell of the DataGrid</returns>
            public static DataGridCell GetCell(this DataGrid grid, int row, int column)
            {
                DataGridRow rowContainer = grid.GetRow(row);
                return grid.GetCell(rowContainer, column);
            }
            /// <summary>
            /// Gets the specified row of the DataGrid
            /// </summary>
            /// <param name="grid">The DataGrid instance</param>
            /// <param name="index">The index of the row</param>
            /// <returns>A row of the DataGrid</returns>
            public static DataGridRow GetRow(this DataGrid grid, int index)
            {
                DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
                if (row == null)
                {
                    // May be virtualized, bring into view and try again.
                    grid.UpdateLayout();
                    grid.ScrollIntoView(grid.Items[index]);
                    row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
                }
                return row;
            }
            /// <summary>
            /// Gets the selected row of the DataGrid
            /// </summary>
            /// <param name="grid">The DataGrid instance</param>
            /// <returns></returns>
            public static DataGridRow GetSelectedRow(this DataGrid grid)
            {
                return (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem);
            }
        }
  • 相关阅读:
    深入浅出SQL Server 2008 分区函数和分区表
    数据库的恢复模式
    Windows Server 2003网络负载均衡的实现(转)
    SharePoint2010网站备份还原简单介绍
    HTTP协议详解(转)
    SharePoint 2010之LINQ与SPMetal
    moss 自定义文档库文档图标
    SharePoint 2010环境搭建
    C#中的yield关键字
    .NET开发中你可能会用到的常用方法总结(添加ing...)
  • 原文地址:https://www.cnblogs.com/CoreXin/p/4385946.html
Copyright © 2011-2022 走看看