Frage

Ich habe eine Windows-Universal-App, die sich anmeldet. Ein typisches Szenario mit dieser Art von Anwendung ist unterschiedliche Zustände. Ob zum Beispiel, ob der Benutzer erst zum ersten Mal angemeldet ist oder der Benutzer bereits vorher angemeldet ist und die App wieder wieder öffnet. Je nach Status sind hier die Aktionen

ifloggedin - Homepage anzeigen || IFNOTLOGGINDIN - AnmeldePage anzeigen

jetzt basierend auf dem Zustand (staatlich) müssen wir verschiedene Seiten anzeigen.

Meine Frage ist ähnlich zu Dieses wollte aber verstehen, wie sie in MVVM implementiert werden sollen, und was ist der richtige Ort, um diese bedingte Logik zu setzen.

In app.xaml.cs löst das Problem, löst das Problem, aber verwässert Ihre App.xaml.cs und verstößt gegen den MVVM, da ViewModel die Interaktionslogik nicht umschließt.

die Lösung, die ich versucht habe, ist

    .
  1. Erstellen Sie eine Zwischenseite (intermediate.xaml).
  2. Erstellen Sie entsprechende ViewModel (intermediateviewmoodel.cs) für das oben.
  3. In dem Konstruktor dieses ViewModel enthält die bedingte Anweisung, um zu entscheiden, welche Seite navigiert.
  4. Lassen Sie uns davon ausgehen, dass ich meinen Zustand in der BOOL-Variablen habe, isloggedin. Wo soll ich den bedingten Scheck setzen?

    Der Code in meinem intermediatviewmodel lautet wie folgt

    generasacodicetagpre.

    Das Problem mit dieser Lösung ist jetzt Sie haben eine weitere Seite (intermediate.xaml) in Ihrem Backstack. Gibt es eine Möglichkeit, dies loszuwerden?

    das und ähnliche Lösungen scheinen nicht mehr für Windows Universal-Apps (Windows 8.1 / Windows Phone 8.1) zu sein.

    weiß jemand, wie man das auf dem richtigen Weg mit MVVM umgesetzt wird?

War es hilfreich?

Lösung

Nun, in diesem Fall hält MVVM nicht, da dies vor dem ausgewählten Sicht passieren sollte.Warum erstellen Sie nicht eine Klasse ('Navigator' oder was auch immer) mit Ihrer Logik, und Bereitstellung einer Eigenschaft ('InitialPage'), die Sie in der App (anstelle der hart codierten ersten Seite) verwenden, um zur ersten Seite zu navigieren?Auf diese Weise behalten Sie Ihre Logik außerhalb der App-Klasse, und es gibt wenig Änderungen daran.

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