Wie kann ich Befehlsgewirr im ViewModel vermeiden?

8

Ich baue eine Anwendung, die ziemlich viele Befehle verwendet, und sie verstopfen mein Ansichtsmodell. MVVM ist neu für mich, es tut mir leid, wenn diese Frage ein bisschen dumm ist. Gibt es eine Möglichkeit, das Durcheinander zu reduzieren? Zum Beispiel können Sie hier einen Teil des Durcheinanders sehen.

%Vor%     
Iris Classon 18.12.2011, 15:03
quelle

3 Antworten

5

Sie haben also Befehle für:

  1. Dateioperationen (Öffnen, Speichern, Hochladen in Flicker)

  2. Fensteroperationen (Vollbild, Schließen)

  3. Bearbeiten (Drehen, Ändern der Größe, Farbe usw.)

Berücksichtigen Sie das Gruppieren (Zusammensetzen) verwandter Befehle in einer benutzerdefinierten Klasse, die zum Beispiel FileCommands genannt wird. Erstellen Sie ggf. eine mehrstufige Hierarchie. Wenn Sie in Ihrer Sicht ein hierarchisches Menü haben, möchten Sie wahrscheinlich ähnliche Befehlshierarchie.

Erstellen Sie dann einen Controller pro Befehlsgruppe (z. B. FileController) und in der controller create-Methode, die die Befehle aus der FileCommands-Gruppe mit dem zugehörigen Service registriert.

Siehe Ссылка Beispielanwendungen (z. B. BookController.cs) für einige Ideen zur tatsächlichen Implementierung von Controller / ViewModel-Mapping. Beachten Sie jedoch, dass es nicht genau das gleiche Szenario ist (kein Brechen von Befehlen in Gruppen).

    
surfen 18.12.2011, 15:47
quelle
1

Verwenden Sie Caliburn Micro. Für eine Schaltfläche mit dem Namen name="Logout" ist das einzige, was im ViewModel benötigt wird, eine öffentliche Methode namens Logout.

Und ohne Konvektionsbindungen:

%Vor%

Fügen Sie dann im ViewModel eine Methode namens Remove hinzu, und in diesem Beispiel wird der DataContext an die Methode übergeben.

    
Derek Beattie 18.12.2011 16:20
quelle
0

Ihr ViewModel ist gemeint, um den Kleber zwischen der Ansicht und dem Modell zu bilden. Dies bedeutet, dass, solange Sie das Modell nicht generisch iterieren können, es immer aus einer Aufzählung von 'Klebezeilen' bestehen wird.

Das einzige Durcheinander, das ich mir vorstellen kann, könnte man loswerden, wenn man die XXXCommand -Eigenschaften nicht wörtlich braucht; In diesem Fall könnten Sie eine Sammlung von eigenschaftsähnlichen Strukturen wie (Pseudo-Code)

erstellen %Vor%

Es gibt keinen anderen Grund, Verweise auf die Objekte, die Sie hier erstellen, beizubehalten, außer sie in die richtige Ansichtsmappe zu kleben.

Aber warum nicht das Property-Idiom dafür benutzen? Noch einmal: Die Menge an Unordnung, wie ich es sehe, ist ziemlich begrenzt.

    
xtofl 18.12.2011 15:15
quelle

Tags und Links