编辑单元格事件获取单元格值和位置

本文关键字:单元格 位置 获取 事件 编辑 | 更新日期: 2023-09-27 17:53:57

在我的Datagrid中,我允许用户编辑一些单元格,在编辑这些单元格后,我想将更改提交到数据库(按enter键)。我在网上找不到资源来做这件事。

我使用了一个事件:

CellEditEnding,但事件只提供给我的行和colhow的变化单元格。我如何使用这些来找到单元格本身并获得值?

编辑单元格事件获取单元格值和位置

你可以在这个链接中找到这个函数

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;
}

并从事件处理程序调用它:

object cellvalue = DataGridCell(yourgrid, e.Row, e.Column.DisplayIndex).GetValue;

这个函数在GetCell()函数

中也被调用
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;
        }