Ist das die korrekte Implementierung von MVVM?

9

Ich erstelle eine Anwendung, die es einem Benutzer ermöglicht, Daten einzugeben, zu aktualisieren und zu löschen, die eingegeben und dann in einem Datengitter (CRUD-Operationen) angezeigt wurden.

In meinem View-Modell enthält es Eigenschaften, die an die XAML gebunden sind (zB Firstname ). Es enthält auch eine Navigationseigenschaft sowie Validierungsattribute.

%Vor%

Außerdem enthält es Befehle für die Ausführung von xaml , wodurch eine Instanz der CRUD-Operation erstellt wird;

%Vor%

Und schließlich enthält es auch die CRUD-Operationen. Wie das Einfügen, Aktualisieren und Löschen.

Was mich zu meiner Frage führt. Wenn ich den richtigen MVVM-Weg implementieren möchte, ist all dieser Code zu viel für das Ansichtsmodell?

Soll ich das Modell verwenden und eine Sammlung in meinem View-Modell erstellen und an mein xaml binden? Wäre dies der richtige Weg, dies zu tun?

Soll ich ein Repository-System für die CRUD-Operationen verwenden? Wenn ja, wie würde ich die Daten aus den Textfeldern an das Modell übergeben, um aktualisiert zu werden?

Ich bin neu bei WPF, MVVM und finde es schwierig, mich ohne angemessene Anleitung anzupassen.

    
gregory.bmclub 23.11.2012, 09:47
quelle

2 Antworten

3

Ich würde sagen, dass dies eine korrekte Art ist, MVVM zu implementieren, aber nicht die korrekte Art, MVVM zu implementieren.

Was ich damit meine, ist, dass es keine one korrekte Art gibt, dieses Muster zu implementieren. Wenn Sie ein ViewModel erstellt haben, das an Ihre View gebunden werden kann, ohne zusätzliche Logik in Ihrer View (d. h. Code-Behind) zu haben, dann haben Sie die Essenz von MVVM erfasst.

Ob Sie Ihrem Code mehr Muster und Struktur hinzufügen, liegt ganz bei Ihnen. Wenn dies eine einfache Anwendung ist, würde ich die Muster hell halten. Fahren Sie fort und lassen Sie Ihr ViewModel direkt mit einem Repository sprechen. Ihr jetziger Code sieht mir in dieser Hinsicht gut.

Wenn es sich um eine große Anwendung handelt, möchten Sie möglicherweise weitere Schichten hinzufügen, z. B. eine Service-Schicht oder Datenzugriffsebene. Vielleicht möchten Sie über die Abhängigkeitsinjektion nachdenken.

Aber nehmen Sie nicht einfach ein Muster an oder fügen Sie eine zusätzliche Ebene hinzu, nur weil Sie denken, dass Sie das sollten. Dependency Injection klingt cool, aber in vielen Fällen ist es mühsamer als es wert ist!

    
ColinE 23.11.2012, 09:52
quelle
0

Für mich ist das nicht der richtige Weg. Ich denke, dass die Definition von Eigenschaften wie FirstName im View-Modell keine gute Idee ist. Die Ansicht sollte nur Modell enthalten und Ihr Ansichtsmodell sollte das Modell umbrechen, das (falls erforderlich) an XAML gebunden sein sollte.

Auch die Erstellung von Modellobjekten sollte vollständig unabhängig vom Ansichtsmodell sein. View-Modell sollte nur über Unit-Operationen auf Modellen wissen und Validierungen sollten innerhalb des Modells sein, zB in Ihrem Fall FirstName-Validierungen in ViewModel bedeutet, dass Sie GUI nur beschränken, um die FirstName-Eigenschaft zu validieren, aber was passiert, wenn jemand es von einem anderen Ort aus setzt. p>     

D J 23.11.2012 10:07
quelle