Получить значения ячеек из DataGrid без GetVisualChild <T> - PullRequest
0 голосов
/ 20 сентября 2018

На этом сайте есть решение, которое имеет дело с получением DataGrid значений ячеек без использования связанной коллекции.В этом решении делается ссылка на GetVisualChild<T> ... Получить все ячейки в сетке данных

Очевидно, что MS в своей бесконечной мудрости решила отказаться от GetVisualChild<T>, и есть толькоGetVisualChild(int).

Я знаю, что нас направляют использовать связанный объект, но иногда вам просто нужно работать непосредственно с данными сетки.

Есть ли у кого-нибудь УСПЕШНЫЕ средства получениязначения ячеек из DataGrid (WPF) без связанного объекта?

1 Ответ

0 голосов
/ 20 сентября 2018

Проблема, с которой вы столкнулись, заключается в том, что если 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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...