Проблема, с которой вы столкнулись, заключается в том, что если DataGrid
не привязан, то вы полагаетесь на содержимое ячейки, чтобы найти значение, но если некоторые значения находятся в флажках, а некоторые в текстовых блоках, то у вас нетпростой способ сделать это.
Что вы можете сделать, это использовать DataGrid's
ItemContainerGenerator
, чтобы получить строки, а затем перебрать ячейки строк, чтобы попытаться извлечь значения.
Возможноваш код будет выглядеть примерно так:
foreach (var item in grid.Items)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (row == null)
continue;
foreach (var column in grid.Columns)
{
if (!(column.GetCellContent(row) is TextBlock))
continue;
var cell = column.GetCellContent(row) as TextBlock;
var text = cell?.Text; // this is the cell value
}
}