Hallo,
ich versuche ein DataSet mit ein paar WPF-Controls zu verbinden. Dazu habe ich das Formular mit zwei Grids bestückt, welche ich MasterGrid und DetailGrid genannt habe. In das MasterGrid habe ich exemplarisch drei Textboxen platziert und in das DetailGrid zwei DataGrids.
Den DataContext habe ich wie folgt zugewiesen:
MasterGrid.DataContext = DsKundenstamm.Tables["Kunden"];
DetailGrid.DataContext = DsKundenstamm;
Die Datenbindung an die Textbox:
Text="{Binding Path=KundenID, UpdateSourceTrigger=PropertyChanged, StringFormat=\{0:000000\}}"
Starte ich das Formular, dann ist alles schick, wie ich es erwartet habe.
Das Problem tritt auf, wenn ich das DataSet DsKundenstamm mittels Clear leere und neu befülle.
Dann liefern beide DataGrids weiterhin die erwarteten Daten, die auch korrekt synchronisiert werden.
Die Textboxen bleiben aber leer. 🙁 Woran kann das liegen?
Danke und Gruß
Danke und Gruß Isolde B.
Hallo Isolde,
INotifyPropertyChanged geworfen nach dem Clear/Refill?
Gruss
Coffeebean
Microsoft MVP // Me // Blog // GitHub // @Egghead // All my talks // Speakerdeck
Hallo,
Datasets implementieren nicht das für WPF erforderliche INotifyPropertyChanged /INotifyCollectionCHanged Event. Ein Workaround wäre hier den DataContext erst auf null zu setzten und dann wieder auf das (neu gefüllte) Dataset.
Schöner wäre es wenn Du hier nicht mit DataSets sondern mit Modelklassen die INotifyPropertyChanged und als Listen ObservableCollections verwenden.
Gruß
Hallo unconnected & Coffeebean,
vielen Dank für eure Antworten.
Ich habe jetzt eine Klasse Kunden erstellt und die TextBoxen an deren Eigenschaften gebunden. Die beiden Detailtabellen habe ich vorerst am DataSet belassen.
Funktioniert soweit, hat aber den Schönheitsfehler, dass beim Refill die zweite Detailtabelle leer bleibt und erst Daten anzeigt, wenn die erste Detailtabelle den Focus erhält.
Danke und Gruß Isolde B.
also bei mir hat das immer problemlos geklappt, mit Datasets - jdfs das ReFill.
Bei Datasets ists aber lausig, die richtigen Bindings zu setzen, weil Intellisense sich tot stellt.
Der frühe Apfel fängt den Wurm.