zoukankan      html  css  js  c++  java
  • WPF datagrid设置指定单元格的背景色和Enable

    效果图:

    添加扩展类

    public static class DataGridExtend
    
        {
    
            /// <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;
    
            }
    
        }

    用法:

     var cell = grid.GetCell(2,3);
                if (cell != null)
                {
                    cell.IsEnabled = false;
                    cell.Background = Brushes.LightGray;
                }

    以上是设置datagrid第三行第四列单元格的背景色和Enable属性。

  • 相关阅读:
    opencv.js小案例
    flutter获取状态栏高度
    Flutter自定义路由PageRouteBuilder
    Flutter控制屏幕旋转
    Flutter路由导航Navigator
    小程序组件中有bindinput监听报异常
    Flutter获取屏幕宽高和Widget大小
    正则表达式
    Python安装官方whl包、tar.gz包、zip包
    Python之mmap内存映射模块(大文本处理)说明
  • 原文地址:https://www.cnblogs.com/czly/p/13999412.html
Copyright © 2011-2022 走看看