Согласно документации :
В объявлении поля readonly
указывает, что присвоение полю может происходить только как часть объявления или в конструкторе в того же класса.
Вы делаете это точно, присваивая внутри конструктора.
Сам список является readonly
, а не его содержание.
Свойство DataGrid.Items
возвращает DataGridItemCollection
, представляющее DataGridItems
в DataGrid.
Каждый DataGridItem
является представителем одна строка в отображаемой таблице. Кроме того, DataGridItem
предоставляет свойство Cells
, которое представляет нет. ячеек таблицы (другими словами, столбцы) в отображаемой таблице.
int rowCount = myGrid.Items.Count;
// Get the no. of columns in the first row.
int colCount = myGrid.Items[0].Cells.Count;
Прежде всего, чтобы ответить на ваш вопрос:
DataGrid dataGrid = new DataGrid();
int rowCount = dataGrid.BindingContext[dataGrid.DataSource].Count;
или, если вы точно знаете тип источника данных:
int rowCount = ((DataTable)this.dataGrid.DataSource).Rows.Count;
int columnCount = ((DataTable)this.dataGrid.DataSource).Columns.Count;
((DataTable)this.dataGrid.DataSource).Columns.Count;
Во-вторых, я хочу добавить, что System.Windows.Forms.DataGrid
является элементом управления виджета отображения, а не контейнером для записей. Не существует свойства DataGrid.Rows.Count
или чего-либо подобного для определения количества столбцов. Что вам нужно сделать, так это заглянуть за DataGrid, к свойству DataSource
, которое в большинстве случаев является DataTable
, и взять оттуда всю необходимую вам информацию.
DataGrids представляют фактические элементы данных.
DataGrid dg = new DataGrid();
dg.Items.Count; //Number of Items...i.e. Rows;
dg.Items[0].Cells.Count; //Number of columns for that Items