WPF DataGrid CellEditEnding - Datensatz Nicht Aktualisieren, Bis Zeile den Fokus Verloren
Ich muss in der Lage sein, die Werte zu aktualisieren eines Datensatzes, sobald eine Zelle den Fokus verliert bearbeitet werden. Ich weiß, dass wenn die Zelle den Fokus verliert (CellEditEnding), aber problem ist, die eigentliche Aktualisierung der Kontext-Element nicht auftreten, bis der Fokus auf die Zeile tatsächlich Auftritt. Dies wird zu einem großen Problem, wenn es nur eine Position nach Links, da es nie den Fokus verlieren.
Wie kann ich sicher sein, dass jedes mal, wenn eine Spalte Bearbeiten, ist komplette (CellEditEnding), der eigentliche Kontext für die Zeile aktualisiert wird an diesem Punkt (nicht nur, wenn die Zeile den Fokus verliert)
Vielen Dank im Voraus!
InformationsquelleAutor Anthony Greco | 2011-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
DataGrid.CommitEdit
von IhremDataGrid.CellEditEnding
handler, sicher zu handhaben Reentranz.Hier ein blog-Artikel, der beschreibt die Technik:
InformationsquelleAutor Rick Sladkey
Traf ich ein ähnliches problem, ich habe ein DataGrid-Zeile mit 5 Spalten.
Die Daten aus den 5 Spalten werden aktualisiert, in der Quelle nur nach der gesamten datagrid-Zeile den Fokus verloren hat.
Nach einigem suchen, fand ich eine einfache Möglichkeit, es zu tun.
Dass ist das hinzufügen von "UpdateSourceTrigger=LostFocus" in Ihrem databinding in der Zelle.
Beispiel:
Wird dies den trick tun, also wenn die Zelle den Fokus verloren, anstatt die gesamte Zeile, die Daten aus der Zelle aktualisiert die Quelle sofort.
InformationsquelleAutor RainCast
Ich hatte ein ähnliches problem und keines der "üblichen" Fehlerbehebungen gearbeitet...
Was für mich gearbeitet wurde, verwenden Sie die überladene version von
CommitEdit()
wie folgtInformationsquelleAutor Richard Moore
Einfach springen Sie zu einem anderen Steuerelement Ihres dialogs durch aufrufen von [control].Focus(). Dazu in der OnClosing () - Ereignis.
Das LostFocus-ist die Standard-update-trigger für die Zelle Daten. Aber das Fenster selbst und auch die Grenze oder den Titel des Fensters (und dort die system-Taste "X") nicht richtig konzentrieren. Deshalb ist der Schnitt ist nicht zu Ende.
InformationsquelleAutor Jens
Die Sie verwenden können, die alle PreviewMouseMove Ereignis von einem anderen Objekt.
In meinem Fall möchte ich das datagrid Kontrolle verlieren, bevor Sie hinzufügen eine neue Zeile ein.
MainWindow.xaml.cs
MainWindow.xaml
MainWindowViewModel.cs
InformationsquelleAutor JackThe-1th