So die Grundlagen zu löschen Aktualisierung: Ich habe ein Fenster mit einem Listview auf sie bekam, die durch mein Raster Datacontext bevölkert ist:Listview mit Datatable Bindung, nicht nach Zeile
mainGrid.SetBinding(Grid.DataContextProperty,
new Binding() {
Source = new DataView()
{ Table = SQLHandler.GetHandler[classType.ToString()] }
}
);
in XAML:
<ListView Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" ItemsSource="{Binding}">
alles funktioniert gut, es ist bevölkert. Wie Sie oben sehen können, habe ich eine SQLHandler-Klasse, auf die von Singleton zugegriffen werden kann, und ich kann mit einem Indexer auf meine Tabellen zugreifen.
Das Problem: Fenster lädt, ich wähle eine Zeile, klicken Sie auf die Schaltfläche Bearbeiten, neues Fenster wird geladen, wo ich die Details der ausgewählten Zeile erhalten. Wenn ich diese Zeile über dieses neue Fenster lösche und schließe, wird das Hauptfenster (wo die komplette Datentabelle angezeigt wird) nicht entsprechend aktualisiert. Ich weiß, was die Lösung sein sollte, aber ich kann es nicht funktionieren lassen. (Inotifyproperty geändert Schnittstelle zu SqlHandler Klasse, Binding.IndexerName etc ..)
hier ist die Hauptsache: der Datensatz ist nicht in meiner SqlHandler Klasse, es ist in SqlExecuter, wo alle meine SqlCommands ausgeführt werden.
public override DataTable this[string key]
{
get
{
if (sqlExecuter.GetDataSet.Tables.Contains(key))
return sqlExecuter.GetDataSet.Tables[key];
throw new KeyNotFoundException("The specified key was not found");
}
}
wo GetDataSet ist:
public DataSet GetDataSet
{
get { return ds; }
}
Wie kann ich diese Arbeit machen? Wenn ich eine Zeile in einem anderen Fenster lösche und diese schließe, wird die Listenansicht des Hauptfensters nicht aktualisiert. Die einzige Option, die ich habe, ist eine Aktualisierungsschaltfläche zu setzen und die Eigenschaft datacontext erneut zu binden, dann funktioniert es natürlich, aber mein Ziel ist ein "Live" -Update-System, darum geht es schließlich.
Was ich versucht habe: GetDataSet in SqlExecuter: implementiert die Schnittstelle inotifypropertychanged, aber nichts geändert. und ich kann inotifypropertychange nicht auf meinem Indexer in SqlHandler implementiert haben, da es keinen Setter hat, ich immer nur auf die Tabellen von Code-behind zugreifen, mein sqldataAdapter füllt sie (Fill-Methode)
ps : Ich plane nicht wirklich eine ObservableCollection zu erstellen, weil 90% meines Codes neu geschrieben werden sollten und wenn ich eine Zeile lösche, lösche ich meinen Datensatz und fülle ihn wieder auf, so dass ich nicht einmal erwarte, dass er jede Änderung bemerkt nur, wenn ich meine Datentabelle aufzufüllen, sollte meine Listview darüber wissen .. und erfrischen sich