Frage

Ich habe eine WPF-Seite, die ein Listenfeld und einen Rahmen enthält. Der Rahmen hat verschiedene Seiten in sie durch die Auswahl im Listenfeld bestimmt geladen.

Jede Seite innerhalb des Rahmens hat eine Vielzahl von verschiedenen Eingabefeldern und hat ein Speichern Abbrechen-Taste. Wenn das Speichern-Schaltfläche geklickt wird muß ich den Inhalt in die Datenbank und die Listbox in der übergeordneten Seite gespeichert werden aktualisiert, um die neuen Daten zu reflektieren.

, um die Daten zu speichern ist einfach, aber wie starte ich eine Aktualisierung auf den Inhalt der Listbox in der übergeordneten Seite, wenn es von der Seite, die innerhalb des Rahmens Aufruf?

Ich muß irgendwie in der Lage sein, die übergeordneten Seiten zuzugreifen steuert, dies zu tun.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Es ist technisch möglich, in die übergeordneten Steuerung zu erreichen und haben Sie Ihren Weg mit den Kontrollen enthalten, aber es macht für Code, der sehr schwierig ist, weil zu halten, wenn Sie die Struktur der Steuer Eltern zu ändern, brechen Sie Code in allen die enthaltenen Seiten. Das wäre ein sehr eng gekoppelte Design berücksichtigt werden, und es ist oft zerbrechlich.

Ein somehwat sauberer Entwurf würde Ihre Seite Klassen ein Ereignis auslösen haben, wenn die Save-Taste gedrückt wird. Dann können Sie Ihre Eltern Rahmen der Veranstaltung sinken und aktualisieren, was es braucht weiß nach einem Speichervorgang aufgefrischt werden. Das ist einfacher zu warten, weil Ihre Komponenten mehr sind lose gekoppelt, aber es steckt noch eine Menge Datenbankkenntnisse in Ihre GUI-Komponenten. Eine solche Konstruktion könnte für eine relativ einfache Anwendung geeignet sein, an dem Sie nicht erwarten, viel Wartung oder zukünftige Erweiterungen zu tun.

Das Designmuster ziehe ich (wie viele Entwickler tun) ist die Datenbank-Handling und Geschäftslogik innerhalb einer oder mehreren Klassen mit einer einfachen programmatische Schnittstelle zu isolieren, die leicht getestet werden kann. Die GUI-Komponenten sind so einfach und dünn wie möglich gehalten, damit sie bei Bedarf einfach ausgetauscht werden. Dies ist oft eine Model-View-Controller-Muster genannt, aber es gibt auch andere Namen für sie. In Ihrem Beispiel der „Controller“ Klasse, die Ihre Geschäftslogik kapselt Eigenschaften und Methoden zum Lesen und Einstellungsinformationen haben würde, und ein „Speicher“ oder „Commit“ Methode, die Änderungen an eine Datenbank schreibt. Nach dem Speichern ist, wäre es ein „Saved“ oder „Changed“ Ereignis auslösen, die alle Kontrollen ( „Ansichten“) meldet Informationen anzeigt, dass die Informationen geändert hat und sie würden sich erfrischen auf der Grundlage der neuen Werte der Eigenschaften der Controller-Klasse .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top