Это поздний ответ, но так я его выполнил. Это дает вам индекс каждой выбранной строки в DataGrid (dgQuery - это имя моей DataGrid):
foreach (var selection in dgQuery.SelectedItems)
{
DataRowView row = (DataRowView)item;
int index = Convert.ToInt32(row.Row[0]) - 1;
}
Это дает 1 в индексе 0, поэтому нам нужно вычесть 1 в каждом индексе.
.Row[0]
На самом деле это столбец (в моей голове) ... этого DataRowView, не знаю, почему он называется строкой. Вы можете изменить его на [1], [2] и т. Д. Для просмотра других ячеек в этой строке.
С этим решением вам не нужна коллекция, массив, ничего подобного. Вы просто работаете с тем, что у вас под рукой, и используете существующий код.
Огромным плюсом этой реализации, по крайней мере для меня, был тот факт, что она проходит через выбранные элементы в порядке их выбора. Это может быть очень мощный инструмент, если вы хотите знать порядок выбора пользователя.
Я публикую это, потому что я потратил более 4 часов на поиски решения. Я даже отказался от флажков, потому что у меня нет достаточно времени, чтобы реализовать их для хорошей работы ... может быть, в будущем.