Ich bin ein wenig verwirrt, wie ich mein Programm mit Hilfe von DataBindings optimieren kann. Mein Programm verwendet mehrere Linq2SQL gebundene Objekte zum Speichern der Daten. Alle ORM-Objekte werden in einer Hierarchie gespeichert. In einem zweiten GUI-Projekt zeige ich diese Daten in einigen Text- und Combobox-Feldern an.
Die Hierarchie der Datenstruktur sieht wie folgt aus:
JobManager
enthält ein Wörterbuch derJobs
- Jeder Auftrag enthält ein Wörterbuch mit
Jobitems
- Jedes Jobitem enthält genau eine
Article
Job
, Jobitem
y Article
sind jeweils Linq2SQL-Objekte, die einen ORM darstellen.
Jetzt habe ich eine grafische Benutzeroberfläche mit 2 Listenansichten und einem Registerkartenbereich. Die Registerkarte zeigt die Eigenschaften von Jobs, Jobitems und Artikeln an und bietet die Möglichkeit, Jobs und Jobitems zu ändern. Die GUI sollte sich wie folgt verhalten:
- Wenn ein
Job
in der ersten ListView ausgewählt wird, werden die zugehörigen Jobitems in der zweiten ListView angezeigt und Detailinformationen über den Job werden im Registerkartenbereich angezeigt. - Wenn ein
Jobitem
in der zweiten ListView ausgewählt ist, werden die Jobitem-Details und die Artikeldetails im Registerkartenbereich angezeigt, aber nur die Jobitem-Infos sind bearbeitbar. - Wenn Änderungen vorgenommen werden, muss der Benutzer sie absichtlich speichern. Andernfalls sollten die Änderungen verworfen und nicht mit der Datenbank synchronisiert werden.
Wie kann ich dieses Verhalten mit DataBinding erreichen?
Insbesondere kann ich eine komplette Sammlung einmal an ein einzelnes Textfeld binden und durch seine Position, die durch die Auswahl in den ListViews bestimmt wird, verschieben? Oder muss ich für jede Auswahl, die der Benutzer trifft, einzelne DataBindings pro Auftrag hinzufügen und entfernen?