{"id":3882,"date":"2013-10-29T11:53:56","date_gmt":"2013-10-29T10:53:56","guid":{"rendered":"https:\/\/www.kolja-engelmann.de\/blog\/?p=3882"},"modified":"2013-10-29T11:53:56","modified_gmt":"2013-10-29T10:53:56","slug":"ein-simuliertes-wpf-datagrid-roweditended-event","status":"publish","type":"post","link":"https:\/\/www.kolja-engelmann.de\/blog\/2013\/10\/ein-simuliertes-wpf-datagrid-roweditended-event\/","title":{"rendered":"Ein simuliertes WPF-DataGrid.RowEditEnded-Event"},"content":{"rendered":"<p>Manchmal verstehe ich das .NET Framework nicht. Kann allen m\u00f6glichen Sch***, aber grundlegende Sachen sind nicht oder nicht vollst\u00e4ndig implementiert. So gibt es zum Beispiel das tolle DataGrid-Control mit dem ich einfache SQL-Datenbanktabellen bearbeite. Nat\u00fcrlich will ich diese \u00c4nderungen auch wieder zur\u00fcck in die Datenbank schreiben aus der sie stammen. Also suche ich nach einem Event welches mir anzeigt, dass eine \u00c4nderung\/L\u00f6schung erfolgreich durchgef\u00fchrt wurde. Da gibt es jedoch nur das <code>RowEditEnding<\/code>-Event, das ausl\u00f6st BEVOR die \u00c4nderungen in die zugrunde liegende Datenquelle zur\u00fcckgeschrieben werden. Eigentlich sollte es auch das <code>RowEditEnded<\/code>-Event geben, welches eben NACH dem Speichervorgang ausgel\u00f6st wird, nicht wahr? Pech, <code>RowEditEnded<\/code> gibt es nicht f\u00fcr WPF, sondern nur f\u00fcr Silverlight.<\/p>\n<p>Was soll dieser Bl\u00f6dsinn? Brauchen WPF-Entwickler so ein Event nicht? Wurde es schlichtweg vergessen?<\/p>\n<p>Zum Gl\u00fcck kann man <code>RowEditEnded<\/code> mit einem Trick simulieren.<\/p>\n<pre class=\"lang:c# decode:true crayon-selected\">DataGrid myDataGrid = new DataGrid();\r\nmyDataGrid.RowEditEnding += myDataGrid_RowEditEnding;\r\n\r\nprivate void myDataGrid_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)\r\n{\r\n  if (e.EditAction == DataGridEditAction.Commit)\r\n  {\r\n    Dispatcher.BeginInvoke(new Action(() =&gt; \/** &lt;Dein Code&gt; **\/, System.Windows.Threading.DispatcherPriority.Background);\r\n  }\r\n}<\/pre>\n<p>Nicht sch\u00f6n, funktioniert aber.<\/p>\n<p>Done;<\/p>","protected":false},"excerpt":{"rendered":"<p>Manchmal verstehe ich das .NET Framework nicht. Kann allen m\u00f6glichen Sch***, aber grundlegende Sachen sind nicht oder nicht vollst\u00e4ndig implementiert. So gibt es zum Beispiel das tolle DataGrid-Control mit dem ich einfache SQL-Datenbanktabellen bearbeite. Nat\u00fcrlich&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":3883,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[38],"tags":[40],"class_list":["post-3882","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codeschnippsel","tag-wpf"],"jetpack_featured_media_url":"https:\/\/www.kolja-engelmann.de\/blog\/wp-content\/uploads\/2013\/10\/icon-net-framework.png","jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/posts\/3882","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/comments?post=3882"}],"version-history":[{"count":0,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/posts\/3882\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/media\/3883"}],"wp:attachment":[{"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/media?parent=3882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/categories?post=3882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kolja-engelmann.de\/blog\/wp-json\/wp\/v2\/tags?post=3882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}