Это происходит потому, что
DataGridInsRep.Columns[2].GetCellContent(DataGridInsRep.Items[i])
возвращает содержимое столбца, внутренне TextBlock
(если не переопределено шаблоном ячейки).
Измените код на
var codeTextBlock = DataGridInsRep.Columns[2].GetCellContent(DataGridInsRep.Items[i]) as TextBlock;
Dtest.MCode = codeTextBlock.Text;
Вы должны сделать это для других свойств.
Однако другая перспектива здесь заключается в том, почему вы выбираете такие данные. Если ItemSrid ItemSource связан с коллекцией класса, то следующий код более читабелен:
var itemsSource = DataGridInsRep.ItemsSource as IEnumerable;
if (itemsSource != null)
{
foreach (var item in itemsSource.OfType<YourClass>())
{
Dtest.MCode = item.MCode;
//...
}
}