Ich versuche, MVVM und WPF zu lernen und verwende das MVVM Light Toolkit. Hier ist, was ich nicht vollständig verstehe und vielleicht liegt es an einer falschen Architektur meiner Benutzeroberfläche.
Was ich versuche zu erreichen, ist eigentlich ziemlich einfach. Dies ist übrigens eine Utility-Anwendung. Ich möchte ein Fenster, das sozusagen als "Controller" dient und über eine Reihe von Schaltflächen verfügt. Jede Schaltfläche sollte den Inhalt eines Rahmens ändern. Beispiel: Eine Schaltfläche lädt einen "Bildschirm" (oder eine "Ansicht", wenn Sie so wollen), mit dem der Benutzer eine "Agentur" konfigurieren kann, bei der es sich um ein benutzerdefiniertes Objekt handelt. Ein weiterer Knopf lädt eine Liste von Benutzern von der Agentur, die auf dem ersten "Bildschirm" war. Diese Ansicht 'Benutzer' muss ebenfalls in denselben Frame geladen werden. Tatsächlich ist das Fenster mit allen Tasten tatsächlich nur dafür verantwortlich, die "Bildschirme" in den Rahmen zu laden. Das Fleisch der Anwendung wird innerhalb aller separaten "Bildschirme" sein
Was ich nicht verstehe, ist 1) wie man jeden Bildschirm / jede Ansicht voneinander kennt, da man von dem anderen abhängig ist. Es scheint, dass das ViewModel in MVVM nichts wissen sollte. Aber in meinem Fall muss ich Informationen weitergeben (wie meine Agentur).
Wenn ich ein paar Hinweise darauf bekommen könnte, was ich untersuchen muss, wäre das großartig.
Danke!
Einige Ideen, die einige der Punkte verbinden könnten:
Hilft das überhaupt? Lass deine Gedanken kommen und ich werde weiter kommentieren und ich bin mir sicher, die Gemeinde wird das auch tun:)
Wenige Dinge:
Sie können zuerst versuchen, Ihre Modelle vorzubereiten (wenn Sie dies noch nicht getan haben) und dann Ansichtsmodelle für sie erstellen (denken Sie daran, welche Eigenschaften von Modellen für Ansichten verfügbar gemacht werden sollen) und sobald diese fertig ist, bauen Sie Ihre Ansichten auf Modelle ansehen. Andersherum ist auch praktikable Option - wählen Sie, was auch immer für Sie natürlicher fühlt.
Noch eine Sache: Da Sie erwähnt haben, dass Sie mehrere Bildschirme in einem (ich nehme an) Hauptbereich anzeigen können, denken Sie darüber nach, Ihre Ansichtsmodelle mit etwas in der Art bool IsCurrentlyActive
Eigenschaft auszustatten. Auf diese Weise können Sie Ansichten einfach mit Schaltflächenklicks anzeigen und ausblenden und trotzdem den Bindungsmechanismus verwenden.
Sie sollten nicht voneinander wissen. Das ist, was der Messenger für Controller und Ansichten ist, die die Ereignisse abonnieren, an denen sie interessiert sind. Auf diese Weise müssen sie nicht wissen oder sich darum kümmern, woher sie stammen.
Hmm Kendrick ist schneller. Was er sagte.
Es klingt auch so, als ob Sie eine Art von Outlook-Schnittstelle wünschen, eine Navigation, die andere Ansichten lädt. Ich hatte die gleiche Frage vor einer Weile. Wie funktioniert es in WPF ohne Prisma?
>Um das MVVM-Muster besser zu verstehen, sehen Sie sich diesen Artikel an: WPF-Apps mit dem Model-View-ViewModel-Design Muster
Ich rate Ihnen auch, sich das Caliburn Micro -Rahmenwerk anzuschauen.
Tags und Links wpf c# mvvm mvvm-light