C# WPF Datagrid aktuell gewählte Zeile lesen!

Nick_SMI

Ensign
Registriert
Sep. 2015
Beiträge
153
Hallo zusammen!

Ich habe meine Datagrid mit einer Liste gefüllt und möchte nun wissen, wie ich den ausgewählten Inhalt abfragen kann.
Leider geht
Code:
((DataRowView)(listeBenutzer.SelectedItem)).Row.ItemArray[1].ToString();
nicht....

Grüße und danke im Voraus!
 
Hast du das Datagrid wirklich an eine Liste von Objekten des Typs 'DataRowView' gebunden? Eigentlich solltest du bei listeBenutzer.SelectedItem nach dem casten wirklich das Objekt aus der Liste erhalten welchs angeklickt wurde. Wenn du also eine Liste von String angebaut hast gibt es ein String zurück, wenn du was komplexes angebunden hast eben genau das Objekt und dann kannste auf die Properties zugreifen etc.
 
Der entsprechende Code sollte so aussehen.

Code:
string userID = (string)(((DataRowView)(DataGrid.SelectedItem)).Row[1]);

Ich kann dir aber nur empfehlen, dich mit dem MVVM-Pattern auseinander zu setzen wenn du WPF benutzt.

Zur Einführung ist dieser Artikel nicht verkehrt.
 
So bin ich vorgegangen:
Code:
class Zeiten
{
    public string Linie { get; set; }
    public string Von { get; set; }
    public string Abf { get; set; }
    public string Nach { get; set; }
    public string Ank { get; set; }

    public Zeiten(string Linie, string Von, string Abf, string Nach, string Ank)
    {
        this.Linie = Linie;
        this.Von = Von;
        this.Abf = Abf;
        this.Nach = Nach;
        this.Ank = Ank;
    }
}

Code:
var items = new List<Zeiten>();
items.Add(new Zeiten(linie, Properties.Settings.Default.StarName, result.ToString("H:mm"), ziel, result2.ToString("H:mm")));
ZeitList.ItemsSource = items;
 
Ich gehe jetzt mal davon aus das du also die 'items' an das Datagrid gebunden hast.

Dann sollte
Code:
(Zeiten)listeBenutzer.SelectedItem
dir die Zeile liefern. Und dann kann man z.b. mit
Code:
(Zeiten)listeBenutzer.SelectedItem.Linie
die Linie der Zeile erhalten.

Wenn man nach 'DataGrid get current selected row' findet man übrigens mehr als genug Beispiele ;)
 
Danke, werd gleich mal danach suchen, aber leider klappen deine Beispiele nicht, ich kriege dann nur als string "Zeiten"
Gruß
Ergänzung ()

8utch0r schrieb:
Der entsprechende Code sollte so aussehen.

Code:
string userID = (string)(((DataRowView)(DataGrid.SelectedItem)).Row[1]);

Ich kann dir aber nur empfehlen, dich mit dem MVVM-Pattern auseinander zu setzen wenn du WPF benutzt.

Zur Einführung ist dieser Artikel nicht verkehrt.

Auch das ausprobiert und folgende Exception erhalten: "Das Objekt des Typs "Zeiten" kann nicht in Typ "System.Data.DataRowView" umgewandelt werden."
 
Zurück
Oben