Frage

In meiner WPF MVVM Anwendung meines Modell ist ein komplexer Baum von Modellobjekten weichen ständig zur Laufzeit verändert. Modellinstanzen kommen und zur Laufzeit gehen, ändern ihre Position innerhalb des Baumes und natürlich ihre vielen Eigenschaften ändern. Meine Ansicht ist fast eine Eins-zu-Eins-visuelle Darstellung des Baumes. Jedes Modell Beispiel ist in 80% der Fälle auch einen Knoten im Baum.

Meine Frage ist nun, wie ich das Ansichtsmodell um diesen Entwurf würde? Mein Problem ist, dass es eine ganze Reihe von verschiedenen Modelltypen mit jedem ziemlich vielen Eigenschaften. Wenn ich MVVM corretcly die Ansicht verstanden soll nicht direkt mit dem Modell kommunizieren, so würde dies bedeuten, dass ich ein Ansichtsmodell Typen für jeden Modelltyp erstellen müsste und muß jede Eigenschaft des Modelltypen im Ansichtsmodell rewrap.

Auch würde das Ansichtsmodell müssen das Property des Modells zu „binden“, um es passieren entlang der Ansicht (wpf datatbinding verwenden). Ich würde eine Fabrik benötigen, die eine Ansichtsmodell Instanz für jedes Modell erstellt und stellen die neu erscheint und ich würde Habe jede Viewmodel-Instanz zu entsorgen, wenn das entsprechende Modell verschwindet. Ich am Ende aller Instanzen zu verfolgen ich herstellte. Es ist unglaublich, wie viel aufblasen Code Gebühren zu dieser doppelten Umhüllung erzeugt wird. Ist das wirklich ein guter Ansatz? Jedes Unternehmen und jede Eigenschaft mehr Erz weniger doppelt vorhanden, und ich habe eine Menge zusätzlicher Code halten Modell und Ansicht synchron. Wie gehen Sie das? Gibt es einen besseren Weg, dies zu lösen?

Hat jemand eine Referenz / Beispielimplementierung für diese haben, kann es besser als ich tun?

War es hilfreich?

Lösung

Ich glaube, Sie können in der Falle von Paradigma ausgeführt werden, wenn Sie diesem Weg folgen. MVVM ist nichts anderes als ein Muster, die Entwicklung in WPF Welt vereinfacht. Wenn dies nicht der Fall - tun Sie es nicht Ihren Ansatz verwenden oder revidieren. Ich würde nicht mehr als 80% meiner Zeit damit verbringen, nur die „Verwendung von MVVM“ Feld zu überprüfen.

Nun zu Ihrer Frage zurück. Korrigieren Sie mich, wenn ich falsch liege, aber es klingt wie Sie bei MVVM aus entgegengesetzter Richtung suchen: Sie brauchen keine Modell Ansichtsmodell Eins-zu-Eins-Entsprechung. Normalerweise erstellen Sie Viewmodel auf der Grundlage Ihrer Ansicht zuerst, und nur dann auf einem Modell.

Im Allgemeinen sehen Sie auf einem Bildschirm Mockup von Grafikern, und erstellen Ansichtsmodell entsprechen, die alle erforderlichen Felder aus dem Modell nimmt, Wraps / ändern / Format / kombiniert sie anzeigen Entwicklung so einfach wie möglich zu machen.

Sie haben gesagt, dass Ihre Ansicht ist fast eins-zu-eins visuelle Darstellung des Modells. In diesem Fall kann es hat Sinn ein sehr einfaches Ansichtsmodell zu schaffen, das Wurzelobjekt des Modell Baumes aussetzt und View-Modell über diese Eigenschaft direkt verbrauchen lassen. Dann, wenn Sie einige Anpassungen anzeigen oder Befehle benötigen Verarbeitung Sie können das auf Ansichtsmodell übertragen.

Es tut uns sehr vage Antwort. Vielleicht könnten wir, wenn Sie spezifischere Frage zerstreuen, die Verwirrung:) ...

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