none
C# WPF DataGrid Selected Cell Rowindex ermitteln RRS feed

  • Frage

  • Hallo Zusammen,

    Wie kann ich in einer WPF Anwendung den Rowindex einer selektierten Zelle ermitteln?

    Beim Collumnindex gelingt mir das problemlos.

    vielen Dank

    Gruß

    Carl-Heinz

    Freitag, 20. März 2015 10:25

Antworten

Alle Antworten

  • Hallo,
    ich vermute mal, dass du irgendwo her eine DataGridCell hast. Da fällt mir momentanb auch nur die Möglichkeit ein manuell im VisualTree hoch zu gehen bis man das DataGridRow findet. Von dem kann man dann der Index abfragen:
    DependencyObject dep = cell;
    while (dep != null && !(dep is DataGridRow))
        dep = VisualTreeHelper.GetParent(dep);
    var rowIndex = dep is DataGridRow ? (dep as DataGridRow).GetIndex() : -1;
    In einigen Events des DG ist es aber auch möglich das DataGridRow-Objekt direkt über die EventArgs abzurufen.

    Tom Lambert - .NET (C#) MVP
    Wozu Antworten markieren und für Beiträge abstimmen? Klicke hier.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter | Account bestätigen (Verify Your Account)
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    Freitag, 20. März 2015 15:44
    Moderator
  • Hallo Tom,

    danke für Deine Antwort.

    Mein eigentliches Ziel ist es eine Zelle nach erfolgter Bearbeitung farbig zu markieren.

    Dazu hätte ich für folgenden Code den Row Index gebraucht.

    RowIndex = ?;
    DataGridRow row = this.SichtenDataGrid.ItemContainerGenerator.ContainerFromItem(DG.Items[RowIndex]) as DataGridRow;
    DataGridCell cell = this.SichtenDataGrid.Columns[DG.CurrentCell.Column.DisplayIndex].GetCellContent(row).Parent as DataGridCell;
    cell.Background = System.Windows.Media.Brushes.Red;//Hintergrund zuweisen

    Ich glaube aber der bessere Weg das Problem zu lösen, geht über Property Trigger im XAML.

    Hierzu muss ich erst noch lernen.

    viele Grüße

    Carl-Heinz

    Samstag, 21. März 2015 07:20