Getting cell value in DataGrid in WPF

For WinForms, this is:

var value = DataGridView.Rows[0].Cells[0].Value 

Is there any way to get it in WPF?

+6
source share
2 answers

I think the best way is to use the Items property and directly access your data item:

 var dataItem = dataGrid.Items[0] as ...; 

But you can use this class to get the cell and access the value using the GetValue () method (it will be more like your example).

Code taken from here: datagrid get cell index

 static class DataGridHelper { static public DataGridCell GetCell(DataGrid dg, int row, int column) { DataGridRow rowContainer = GetRow(dg, row); if (rowContainer != null) { DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer); // try to get the cell but it may possibly be virtualized DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column); if (cell == null) { // now try to bring into view and retreive the cell dg.ScrollIntoView(rowContainer, dg.Columns[column]); cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(column); } return cell; } return null; } static public DataGridRow GetRow(DataGrid dg, int index) { DataGridRow row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index); if (row == null) { // may be virtualized, bring into view and try again dg.ScrollIntoView(dg.Items[index]); row = (DataGridRow)dg.ItemContainerGenerator.ContainerFromIndex(index); } return row; } static T GetVisualChild<T>(Visual parent) where T : Visual { T child = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); child = v as T; if (child == null) { child = GetVisualChild<T>(v); } if (child != null) { break; } } return child; } } 
+5
source

Generally, you do not need to do this. In WPF, the datagrid is intended for use with data binding, which means that there is a basic set or object that has the same value as the cell, so you need to access this collection / object directly. If you need to access a cell value, you may need to rethink your design.

+3
source

All Articles