Frage

Wir haben eine Anwendung mit einer typischen Master-/Detailansicht.In der Masteransicht wird eine Liste der Tickettitel angezeigt. Wenn Sie auf einen Tickettitel klicken, wird eine Ansicht mit den Ticketdetails angezeigt.

Die Masteransicht verfügt über ein Modell, bei dem es sich um eine Liste von „Ticket“-Objekten handelt, die jeweils weitere Informationen zu einem bestimmten Ticket enthalten.Wir haben beim Klicken einen Handler gebunden, der im Grunde eine neue Detailansicht instanziiert und anzeigt.Das funktioniert gut, außer dass wir dem Konstruktor alle Konfigurationswerte als primitive Datentypen übergeben müssen (wir wissen, dass wir beim Instanziieren keine Objekte verwenden können).

Wir haben darüber nachgedacht, dies anders zu machen, konnten es aber nicht zum Laufen bringen.Im Init() (des Detailansichtsmodells) übergeben wir nur die ID (des angeklickten Tickets) und wollten Mvx.Resolve verwenden, um das Masteransichtsmodell zu erhalten.Die erste Frage wäre also: Können Sie beliebige Ansichtsmodelle innerhalb anderer Ansichtsmodelle abrufen?

Eine zweite Idee wäre, eine Basis-Ansichtsmodellklasse zu schreiben, von der alle Ansichtsmodelle in unserer App erben, die das Ansichtsmodell bei der Instanziierung bei einem Dienst registriert, sodass Sie diesen Dienst aufrufen und das Ansichtsmodell von überall abrufen können (Mediatormuster).Würde das gegen den Rahmen verstoßen?

Eine Antwort, die ich gefunden habe, ist „Nachrichten verwenden“, aber mir kommt es irgendwie sperrig vor, zumindest wie ich das verstanden habe.Das Detailansichtsmodell müsste eine Nachricht an das Masteransichtsmodell senden „Ok, ich bin jetzt bereit“ und dann würde das Masteransichtsmodell sagen: „Okay, hier ist die Konfiguration“.

Um die Fragen zusammenzufassen:

  1. Ist es möglich, bestimmte Ansichtsmodelle aus dem Framework in anderen Ansichtsmodellen abzurufen?
  2. Würde die manuelle Implementierung gegen das Framework verstoßen?
  3. Haben wir den Nachrichtenansatz richtig verstanden und wenn nein, was wäre eine einfachere/allgemeinere Vorgehensweise?

Prost und Danke

Tom

War es hilfreich?

Lösung

Wenn ich Daten über Ansichtsmodelle hinweg teilen muss, verwende ich normalerweise einen Dienst, um sie zu verwalten.Der Dienst wird normalerweise über IoC injiziert.

Ich behandle View Models als Vermittler zwischen den Diensten und der View.Der größte Teil meiner Logik ist im Dienst gespeichert.Die einzigen Dinge, die ich im Ansichtsmodell habe, sind Eigenschaften für die Datenbindung, Befehle, die an einen Dienst gesendet werden, und andere Probleme auf der Präsentationsebene.

Für Ihr Szenario hätte ich das MasterViewModel Übergeben Sie eine Kennung an die DetailViewModel, wo es gefragt wird ConfigurationService für die Konfiguration per ID.

Hoffe das hilft.

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