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);
            }
        }
  • 相关阅读:
    CentOs7安装JDK/Tomcat/Git/Gradle
    eclipse更改web项目的WebContent目录
    (06)SpringCloud实战之Hystrix断路器
    (06)Eclipse中引入maven模块jar包显示成without test code解决方法
    (05)SpringCloud实战之Feign负载均衡
    (04)SpringCloud实战之Ribbon负载均衡
    (03)SpringCloud实战之Eureka服务注册与发现
    (02)SpringCloud实战之Rest微服务构建案例工程模块
    (01)框架整合之SpringMVC
    (02)Maven子工程继承父工程
  • 原文地址:https://www.cnblogs.com/CoreXin/p/4385946.html
Copyright © 2011-2022 走看看