3

重複の可能性:
DataGridからDataGridCellを選択します

WPFにいくつかの列と行を持つデータグリッドがあります。行をクリックすると、選択した行の最初の列を取得したいと思います。どうすればいいですか?そのためにLINQを使用できますか?ありがとう

4

2 に答える 2

0

この拡張メソッドを使用するだけです-

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

また、既存の行と列のID(この場合は0)によってDataGridのセルを取得できます。

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

詳細については、このリンクを確認してください-WPFDataGridの行とセルを取得します

于 2012-06-17T11:32:01.737 に答える
0
var firstSelectedCellContent = this.dataGrid.Columns[0].GetCellContent(this.dataGrid.SelectedItem);
var firstSelectedCell = firstSelectedCellContent != null ? firstSelectedCellContent.Parent as DataGridCell : null;

このようにして、DataGridCell のコンテンツである FrameworkElement と DataGridCell 自体を取得できます。

DataGrid に がある場合EnableColumnVirtualization = True、上記のコードから null 値を取得する可能性があることに注意してください。

特定の DataGridCell について、データ ソースから実際の値を取得するのはもう少し複雑です。DataGridCell はバッキング データ ソースの複数の値 (プロパティ) から構成できるため、これを行う一般的な方法はありません。そのため、特定の DataGridColumn に対してこれを処理する必要があります。

于 2012-06-17T12:33:06.330 に答える