Frage

Ich habe mit dem MVVM Muster tüftelte und jetzt versuche ich ein wenig Anwendung eines darauf basierenden umzusetzen.

Diese Anwendung hat eine Datenraster, in dem überraschenderweise, werden einige Daten dargestellt. Jetzt versuche ich, einige Gruppierung Fähigkeit, um es hinzuzufügen. Ich weiß, wie diese (# und XAML C) in Code zu schreiben, aber ich frage mich, in welcher Schicht ich den verantwortlichen Code setzen sollte.

Ein Teil von mir sagt mir, es in der Ansicht sein sollte, weil sie den Code vor allem für die jeweilige Ansicht. Es ist nicht generisch und dient einer purpos. Die Daten-Gruppe

Auf der anderen Seite denke ich, dass ich es in dem Ansichtsmodell mit einem Befehl umgehen sollte. Es fühlt sich aber, als ob ich mein Viewmodel mit Blick spezifischer Logik zu verunreinigen.

Jede ligt, die auf diesem verschütten werden können?

War es hilfreich?

Lösung

In den meisten meiner MVVM apps Ich versuche zu teilen Verantwortlichkeiten wie folgt aus:

  • Die Ansicht sollte ausführen nur eine einfache Übersetzung von Viewmodel Daten Pixel. Normalerweise führt dies in meist XAML und sehr wenig Code zurück.
  • Das Ansichtsmodell sollte durchführen ansichtsspezifische Logik wie die Gruppierung usw. Ich habe oft sogar mehrere Viewmodel pro Ansicht. Sie können eine Hauptansichtsmodell haben, die eine Liste von Unterviewmodels pro Gruppe zu Ihrer Ansicht zum Beispiel die Gruppierung zu implementieren aussetzt.
  • Wenn Sie irgendeine Logik das gilt für mehr als ein Viewmodel ist es wahrscheinlich Domain-Logik und sollte in die gehen Domänenmodell.

Also ich denke, die Gruppierung in dem Viewmodel gehen sollte.

Andere Tipps

Es gibt keine Antwort auf diese Frage. Es hängt wirklich von Ihrem Szenario:

1) Hat der Benutzer keinen Einfluss auf die Materie? Wenn sie dies nicht tun, und es ist eine Gruppierung fixiert ist, würde ich eine Immobilie mit IGrouping veröffentlichen und den Datendienst oder LINQ verwenden, es zu tun, bevor er die Ansicht gelangt.

Es ist in der Regel weniger performant, wenn Sie in der Ansicht keine Gruppierung, aber es ist nicht eine klare Wahl. Wenn der Benutzer eine Menge verschiedener Gruppierungen wählen kann, könnte dies eine Strafe wert sein für die zusätzliche Nutzbarkeit zahlen ..

, wenn der Benutzer hat einen gewissen Einfluss auf die Gruppierung ich ein binden würde ICollectionView von dem Ansichtsmodell ausgesetzt. Die Ansicht unterstützt die Gruppierung, Filterung, Sortierung und Währung und die ICollectionView Schnittstelle ist von System.ComponentModel so würden Sie nicht einen „gui“ Bezug auf Ihr Ansichtsmodell Projekt hinzuzufügen. Auch die WPF Datagrid unterstützt die ICollectionView Schnittstelle.

Wenn der Benutzer hat keinen Einfluss auf die Gruppierung (die Gruppen fest) Ich würde nur „vor“ die Daten im Modell -GROUP. HTH.

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