Dies ist eine späte Antwort, aber so habe ich es geschafft. Dies gibt Ihnen Index jeder ausgewählten Zeile in der DataGrid (dgQuery ist der Name meiner DataGrid):
foreach (var selection in dgQuery.SelectedItems)
{
DataRowView row = (DataRowView)item;
int index = Convert.ToInt32(row.Row[0]) - 1;
}
Das Ergebnis ist 1 bei Index 0, also müssen wir bei jedem Index 1 abziehen.
.Row[0]
Ist eigentlich eine Spalte (in meinem Kopf)... von diesem DataRowView, nicht sicher, warum es eine Zeile genannt wird. Sie können es zu [1], [2] und so weiter ändern, um andere Zellen innerhalb dieser Zeile anzuzeigen.
Bei dieser Lösung brauchen Sie keine Sammlung, kein Array und nichts dergleichen. Sie arbeiten einfach mit dem, was zur Hand ist, und nutzen den vorhandenen Code.
Das große Plus dieser Implementierung, zumindest für mich, war die Tatsache, dass sie die ausgewählten Elemente in der Reihenfolge durchläuft, in der sie ausgewählt wurden. Dies kann ein sehr leistungsfähiges Werkzeug sein, wenn Sie die Reihenfolge der Auswahl des Benutzers wissen wollen.
Ich poste dies, weil ich gerade über 4 Stunden mit der Suche nach einer Lösung verbracht habe. Ich habe sogar die Kontrollkästchen aufgegeben, weil ich nicht genug Zeit habe, diese so zu implementieren, dass sie gut funktionieren... vielleicht später.