Ich habe ein WPF DataGrid mit einigen Daten. Sie können Zeilen durch ein separates Fenster hinzufügen. Der DataContext ist derselbe, ein LINQ-to-SQL-Objekt. Die Bindung ist auch die gleiche, ich binde die Eigenschaft "ItemsSource" an eine Tabelle.Wie wird ein WPF DataGrid aktualisiert?
In dem anderen Fenster, wenn der Benutzer auf "Speichern" klickt, erstelle ich eine Zeile programmatisch und füge sie mit "InsertOnSubmit" hinzu. Danach benutze ich die Methode "SubmitChanges" von DataContext.
Mein Problem ist, dass das DataGrid nicht aktualisiert wird. Wenn ich die Anwendung neu starte, kann ich die neue Zeile sehen, also befindet sie sich in der Datenbank, aber ich konnte keinen Weg finden, das DataGrid zu aktualisieren.
Bis jetzt habe ich versucht, "UpdateTarget" auf der BindingExpression des DataGrid zu verwenden, aber es hat nicht geholfen. Ich habe auch versucht "dataGrid.Items.Refresh()" - das gleiche Ergebnis. Wie kann ich das beheben?
Ihre Lösung funktioniert offensichtlich. Ich dachte nur, ich könnte mit einem einfachen XAML-Binding-Markup davonkommen. – KovBal
Wenn wir eine ObservableCollection als eine Brücke zwischen linq zu sql und dem Steuerelement verwenden, wie können wir SubmitChanges() verwenden, um das Ergebnis zurück an die Datenbank zu senden? – MemoryLeak
@MemoryLeak - also hier ist das knifflige bisschen; Sie möchten nicht nur wissen, wann sich die * Sammlung * ändert (d. h. was INotifyCollectionChanged), Sie möchten auch wissen, wann sich eines der * Elemente * ändert. Sie müssen also den Sammlungswechsel abonnieren und dann bei "Hinzufügen/Entfernen" den Eintrag "InotifyPropertyChanged" jedes Elements abonnieren. * Dann * müssen Sie entscheiden, was Sie speichern möchten, basierend darauf, welche Benachrichtigungen Sie erhalten. –