重複の可能性:
DataGridからDataGridCellを選択します
WPFにいくつかの列と行を持つデータグリッドがあります。行をクリックすると、選択した行の最初の列を取得したいと思います。どうすればいいですか?そのためにLINQを使用できますか?ありがとう
重複の可能性:
DataGridからDataGridCellを選択します
WPFにいくつかの列と行を持つデータグリッドがあります。行をクリックすると、選択した行の最初の列を取得したいと思います。どうすればいいですか?そのためにLINQを使用できますか?ありがとう
この拡張メソッドを使用するだけです-
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の行とセルを取得します
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 に対してこれを処理する必要があります。