| 

.NET C# Java Javascript Exception

5
Hi,

ich bau grad eine Anwendung mit MVVM und WPF. Das UI besteht aus einem Hauptformular und mehreren Dialogforumularen, die modal angezeigt werden und Details der Daten aus dem Hauptformular zum Editieren bereitstellen.
Jetzt fragte ich mich, was wohl best practices ist, wie man das ViewModel aufbaut:
- eine Klasse, die das ViewModel für alle Dialoge bietet oder
- für jedes Formular eine Klasse.

Was meint ihr?
04.05.2011
BradBrad 53 4
2 Antworten
5
1
Was ist an meiner Antwort falsch?
Die Abschnitte "ViewModel Class Hierarchy" und "The Data Model and Repository" zeigen die gefragten best practices. Man sollte sich vor dem Voten die Seite genau ansehen :-P
Martin Fuchs 04.05.2011
2
Ich weiß auch nicht, was hier manchmal los ist, der von Dir genannte Artikel ist DIE Referenz schlechthin um sich in das Thema einzuarbeiten.
Maria Simlinger 04.05.2011
Der Artikel scheint mir auch sehr gut zu sein. Er zeigt eine ganz andere Sichtweise auf Views, ViewModels etc. Dass selbst die einzelnen "Child Windows" als reine Datenobjekte existieren - interessant und für jemanden, der von WinForms kommt überraschend.
BradBrad 04.05.2011
4
Hallo,

Erstmal: Der von Martin Fuchs gepostete Link ist hervorragend für die Einarbeitung in MVVM. Daher verstehe ich den derzeitigen Minuspunkt nicht. Das werde ich gleich nach Absenden meiner Antwort korrigieren.

Zur Frage:

Eine Klasse für alle Dialoge ist nicht gut.
Ob man generell für jede Maske (Window) ein eigenes Viewmodel benötigt, kann man so nicht sagen, besser ist man assoziiert ein ViewModel mit einer View (bei mir ein UserControl), und baut daraus seine Masken (Windows) zusammen.

Ich baue meine Anwendungen so auf (Elemente reduziert auf die Fragestellung):

Services:
- Model Klassen, die u. U. von einer gemeinsamen Basisklasse ableiten und IDataErrorInfo implementieren.
- Repository Klassen, eine für jedes Model, u. U. auch hier gemeinsame Basisklasse.

WPF Client:
- Views (= User Controls), die genau eine spezielle Ansicht für genau ein Model Objekt abbilden, und zwar durch ein
- ViewModel, das der View zugeordnet wird (über DataTemplates)
- Windows, die ein oder mehrere Views - je nach Anforderung - enthalten.

Da sich viele Funktionalitäten wiederholen habe ich abstrakte Generic Basisklassen eingeführt, die die gemeinsamen Funktionalitäten (z. B. CanSave Property, ItemChanged Event, IsSelected Property für Listenansichten etc., gemeinsame Commands) abbilden.

Ein guter Anhaltspunkt für den Start war für mich das WPF MVVM Application Template der Visual Studio Gallery und vor allem der genannte Artikel.

Grüße
Maria
04.05.2011
Maria Simlinger 1,1k 1 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH