• 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属性。

  • 相关阅读:
    DAY13-前端之JavaScript
    DAY12-前端之CSS
    DAY12-前端之HTML
    DAY11-MYSQL之ORM框架SQLAlchemy
    DAY11-MYSQL视图、触发器、事务、存储过程、函数
    DAY11-MYSQL数据备份、pymysql模块
    DAY11-MYSQL索引原理与慢查询优化
    020.2.2 runtime类
    020.2.1 system
    020.1.2 Arrays集合工具类
  • 原文地址:https://www.cnblogs.com/czly/p/13999412.html
Copyright © 2020-2023  润新知