Daten speichern und laden "MVVM"?

9

Ich arbeite gerade an einem C # -WPF-Projekt mit einigen der von Telerik bereitgestellten Controls und respektiere das MVVM-Muster mit:

  • ein Modell, das die Daten enthält

  • ein ViewModel, das die Daten der View präsentiert

  • Eine Ansicht, die die Daten anzeigt

Natürlich können einige der Modelle wiederverwendet und in verschiedenen Ansichten angezeigt werden (in meinem Fall können die Daten der Inhalt von Formen sein, die in verschiedenen Diagrammen angezeigt werden).

Jetzt fange ich an zu entwerfen, wie man die Daten speichert. Mein Ziel ist sehr einfach: Wenn der Benutzer die Anwendung verlässt und zurückkommt, müssen alle Ansichten hinsichtlich Inhalt, Farbe, Schriftarten, Größe, Position im Raum identisch sein ...

Das Speichern eines Modells umfasst nur den Inhaltsteil. Wie würden Sie die Anzeigeeigenschaften wie Farbe, Schriftarten und Position im Raum speichern, insbesondere wenn mehrere Ansichten auf demselben Modell basieren? Sollte ich Bindungen verwenden und alle Eigenschaften von der Ansicht zum Modell verschieben? Mit dem Risiko, dass die Modellkomplexität stark zunehmen wird?

Haben Sie eine Lösung, bei der Sie die UI-Eigenschaften vom Modell getrennt halten?

Gibt es auch Best Practices zum Speichern und Laden von Daten "der MVVM-Weg"?

Vielen Dank im Voraus.

    
David MVVM 01.08.2014, 15:12
quelle

1 Antwort

4

Ich speichere Benutzeroptionen wie diese in den Anwendungseinstellungen. Wenn Sie nicht mit ihnen vertraut sind, können Sie die vollständige Geschichte auf der Verwenden der Einstellungen in C # auf MSDN. Kurz gesagt, Sie können Anwendungs- und Benutzereinstellungen haben und es klingt so, als würden Sie Benutzereinstellungen wünschen, die pro Benutzer gespeichert werden. UI-Eigenschaften haben keinen Platz in einem Modell, da es keinen Vorteil hat, diese Art von Informationen zusammen mit Modelldaten zu speichern. Sie können so etwas mit ihnen machen:

%Vor%

Es kann einfacher sein, einige Eigenschaften einem Basis- oder Hauptansichtsmodell hinzuzufügen, damit Sie Daten an sie binden können:

%Vor%

UPDATE & gt; & gt; & gt; & gt;

Sie haben recht ... Sie würden Ihre Modelldaten nicht auf diese Weise speichern wollen. Dies ist für UI-bezogene Benutzereinstellungen. Wenn Sie auch fragen, wie Sie Ihre Modelldaten speichern, lautet die schnelle Antwort, dass ich meine in einer Datenbank speichern würde, aber das liegt an Ihnen. Sie können es genauso gut in einer Datei auf Ihrem Computer speichern. Es hängt alles von Skalierbarkeit, Bequemlichkeit, Geschwindigkeit, Zugriff auf Ressourcen, etc. ab, also ist es nicht wirklich eine Frage, die für diese Website geeignet ist.

Es gibt jedoch viele Online-Tutorials, die verschiedene Möglichkeiten zum Speichern von Daten Schritt für Schritt zeigen. Um diese Frage zu beantworten, empfehle ich Ihnen, einige davon zu befolgen.

Was ich Ihnen sagen kann ist, dass es üblich ist, Ihren Datenzugriffscode in einer Klasse in einem separaten Projekt (oder Ordner für ein kleines Projekt) zu platzieren. Diese Klasse wird dann oft nur in einer Parent- oder Basisansichtsmodelleigenschaft referenziert, und alle untergeordneten Ansichtsmodelle würden über diese auf ihre Daten zugreifen ... etwa so:

%Vor%

Dann würden die Child-View-Modelle es so verwenden:

%Vor%

Oder:

%Vor%

Um ein wenig weiter zu klären, macht es in diesem Stadium keinen Unterschied, welche Implementierung Sie für diese Model -Klasse haben. Den Ansichtsmodellen ist es egal, ob sie eine Datenbank oder eine einfache alte Textdatei verwenden, solange sie die Methoden GetSomeData und SaveSomeData implementiert. Daher ist es gut, hier eine Schnittstelle zu verwenden, besonders wenn Sie die Ansichtsmodelle testen möchten.

Schließlich können Sie sich meine Antwort auf die Projektstruktur für MVVM in WPF um auch hier eine bessere Vorstellung zu bekommen.

    
Sheridan 01.08.2014 16:55
quelle

Tags und Links