Вопрос по wpf, datagrid, c#, cell – Как получить значение ячейки из сетки данных в WPF? [Дубликат]

3

Possible Duplicate:
Select DataGridCell from DataGrid

У меня есть сетка данных в WPF с некоторыми столбцами и строками. когда я нажимаю на строку, я хочу получить первый столбец выбранной строки. Как мне это сделать? я могу использовать LINQ для этого? Thanx

Увидетьthis вопрос. gliderkite

Ваш Ответ

2   ответа
0
var firstSelectedCellContent = this.dataGrid.Columns[0].GetCellContent(this.dataGrid.SelectedItem);
var firstSelectedCell = firstSelectedCellContent != null ? firstSelectedCellContent.Parent as DataGridCell : null;

Таким образом, вы можете получить FrameworkElement, который является содержимым DataGridCell и самого DataGridCell.

Обратите внимание, что если DataGrid имеетEnableColumnVirtualization = True, тогда вы можете получить нулевые значения из кода выше.

Получить фактическое значение из источника данных для конкретного DataGridCell немного сложнее. Нет общего способа сделать это, потому что DataGridCell может быть составлен из нескольких значений (свойств) из резервного источника данных, поэтому вам нужно будет обработать это для определенного DataGridColumn.

0

Вы можете просто использовать этот метод расширения

public static DataGridRow GetSelectedRow(this DataGrid grid)
{
    return (DataGridRow)grid.ItemContainerGenerator.ContainerFromItem(grid.SelectedItem);
}

и вы можете получить ячейку DataGrid по существующему идентификатору строки и столбца (0 в вашем случае):

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

Проверьте эту ссылку для деталей -Получить строку и ячейку WPF DataGrid

Похожие вопросы