У меня есть элемент управления формы Windows, который мне нужно использовать в приложении wpf.Элемент управления в DataGridView, но когда я пытаюсь получить доступ к данным, вставленным пользователем в элемент управления, я всегда получаю нулевые значения.
Я уже создал элемент управления с использованием элемента управления WindowsFormHost в xaml и инициализирую столбцывнутри окна основного класса.Я попытался использовать код, который уже использовал в приложении Windows Form для получения данных.
Это инициализация элемента управления
<WindowsFormsHost>
<wf:DataGridView x:Name="data"></wf:DataGridView>
</WindowsFormsHost>
Далее я инициализирую столбцы с этим кодом:
data.AllowUserToAddRows = true;
data.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
DataGridViewTextBoxColumn c1 = new DataGridViewTextBoxColumn();
c1.HeaderText = "Name";
c1.Name = "description";
data.Columns.Add(c1);
DataGridViewTextBoxColumn c2 = new DataGridViewTextBoxColumn();
c2.HeaderText = "Quantity";
c2.Name = "quantity";
data.Columns.Add(c2);
Теперь сетка инициализирована правильно, и если я посмотрю в окно wpf, все в порядке и будет создано правильно.Я также могу вставлять данные и выполнять операции изменения размера над столбцами и строками.Теперь у меня есть кнопка, с помощью которой я должен получить данные, которые вставляет пользователь:
//because count also the header as row
if (data.Rows.Count > 1)
{
int counter = 1;
foreach (DataGridViewRow row in data.Rows)
{
int counter = 1;
//do not count the header
if(counter > 1)
{
string name = row.Cells[0].Value.ToString();
string q = row.Cells[1].Value.ToString();
}
counter++;
}
}
Но в этот момент возникает исключение нулевого указателя, поскольку содержимое row.Cells [0] .Value равно null (даже если данные присутствуют).Возвращенная ошибка: System.Windows.Forms.DataGridViewCell.Value.get вернула ноль.Обратите внимание, что счетчик строк работает нормально, потому что, если я вставлю новую строку, она будет иметь значение 2 (заголовок и новая строка).
Пожалуйста, дайте мне знать, если у вас есть обходной путь для преодоления этой проблемы.