可能重複:
Select DataGridCell from DataGrid如何從WPF中的datagrid獲取單元格的值?
我有一些WPF列和行的數據網格。當我點擊一行時,我想獲得所選行的第一列。我該怎麼做?我可以使用LINQ嗎? 感謝名單
可能重複:
Select DataGridCell from DataGrid如何從WPF中的datagrid獲取單元格的值?
我有一些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;
}
檢查此鏈接的詳細信息 - Get WPF DataGrid row and cell
var firstSelectedCellContent = this.dataGrid.Columns[0].GetCellContent(this.dataGrid.SelectedItem);
var firstSelectedCell = firstSelectedCellContent != null ? firstSelectedCellContent.Parent as DataGridCell : null;
這種方式可以獲取作爲DataGridCell和DataGridCell本身內容的FrameworkElement。
請注意,如果DataGrid有EnableColumnVirtualization = True
,那麼您可能會從上面的代碼中獲得空值。
要從數據源獲取實際值,對於特定的DataGridCell稍微複雜一些。沒有一般的方法可以做到這一點,因爲DataGridCell可以由來自後備數據源的多個值(屬性)組成,因此您需要爲特定的DataGridColumn處理這個問題。
請參見[this](http://stackoverflow.com/q/9978119/995246)問題。 – gliderkite