Как получить значение ячейки из сетки данных в WPF? [Дубликат]

Possible Duplicate:
Select DataGridCell from DataGrid

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

 gliderkite17 июн. 2012 г., 15:58
Увидетьthis вопрос.

Ответы на вопрос(2)

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

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

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.

Ваш ответ на вопрос