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;