Ein simuliertes WPF-DataGrid.RowEditEnded-Event

Manchmal verstehe ich das .NET Framework nicht. Kann allen möglichen Sch***, aber grundlegende Sachen sind nicht oder nicht vollständig implementiert. So gibt es zum Beispiel das tolle DataGrid-Control mit dem ich einfache SQL-Datenbanktabellen bearbeite. Natürlich will ich diese Änderungen auch wieder zurück in die Datenbank schreiben aus der sie stammen. Also suche ich nach einem Event welches mir anzeigt, dass eine Änderung/Löschung erfolgreich durchgeführt wurde. Da gibt es jedoch nur das RowEditEnding-Event, das auslöst BEVOR die Änderungen in die zugrunde liegende Datenquelle zurückgeschrieben werden. Eigentlich sollte es auch das RowEditEnded-Event geben, welches eben NACH dem Speichervorgang ausgelöst wird, nicht wahr? Pech, RowEditEnded gibt es nicht für WPF, sondern nur für Silverlight.

Was soll dieser Blödsinn? Brauchen WPF-Entwickler so ein Event nicht? Wurde es schlichtweg vergessen?

Zum Glück kann man RowEditEnded mit einem Trick simulieren.

DataGrid myDataGrid = new DataGrid();
myDataGrid.RowEditEnding += myDataGrid_RowEditEnding;

private void myDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
  if (e.EditAction == DataGridEditAction.Commit)
  {
    Dispatcher.BeginInvoke(new Action(() => /** <Dein Code> **/, System.Windows.Threading.DispatcherPriority.Background);
  }
}

Nicht schön, funktioniert aber.

Done;

Kolja Engelmann

Technikfan, Freizeitprogrammierer, selbsternannter Toolking und vermutlich größter Drachenfan Deutschlands blogged hier die Lösungen zu IT-Problemen die ihm über den Weg laufen, kleine Softwaretools, nostalgische Anfälle und missbraucht das Ganze gern auch mal als privates Tagebuch und Fotoalbum.

Das könnte dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert