阅读 507

WPF datagrid设置指定单元格的背景色和Enable

效果图:

 

 

添加扩展类

public static class DataGridExtend

    {

        /// 

        /// 获取DataGrid控件单元格

        /// 

        /// DataGrid控件

        /// 单元格所在的行号

        /// 单元格所在的列号

        /// 指定的单元格

        public static DataGridCell GetCell(this DataGrid dataGrid, int rowIndex, int columnIndex)

        {

            DataGridRow rowContainer = dataGrid.GetRow(rowIndex);

            if (rowContainer != null)

            {

                DataGridCellsPresenter presenter = GetVisualChild(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;

        }



        /// 

        /// 获取DataGrid的行

        /// 

        /// DataGrid控件

        /// DataGrid行号

        /// 指定的行号

        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;

        }



        /// 

        /// 获取父可视对象中第一个指定类型的子可视对象

        /// 

        /// 可视对象类型

        /// 父可视对象

        /// 第一个指定类型的子可视对象

        public static T GetVisualChild(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(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属性。

 

原文:https://www.cnblogs.com/czly/p/13999412.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐