Ich baue gerade eine MVVM-basierte Anwendung. Die Anwendung sollte auch einen Assistenten im MVVM-Stil haben. Der Assistent ist kein normaler Assistent, sondern eine besondere Art von Assistent. Mein Ziel ist es, einen Assistenten mit
zu implementieren1.) hat auch mehrere Zweige. Der Assistent kann Sie in eine andere Richtung führen. Also muss der Assistent nicht geradlinig sein.
2.) kann auch Abkürzungen haben. Sie können einige Seiten überspringen, auf denen Standardwerte eingestellt sind.
3.) ist auch normal - einfach.
Beachten Sie, dass einige Informationen auf den Wizard-Seiten im laufenden Betrieb verfügbar sind. Das bedeutet, dass die Information zwischen jedem Schritt übergeben und verarbeitet werden kann.
Gibt es Ansätze wie Muster, um mein Problem zu lösen? Wie implementiere ich es am besten?
Wenn Ihr Assistent über eine einzelne VM verfügt, die den Status / die Ergebnisse jedes Schritts speichert und hinter einer Ansicht liegt, die ein Benutzersteuerelement ist ...
Sie könnten einen Frame in der Ansicht des Assistenten haben, der zwei Ereignisse im Code dahinter benötigt (Dies hängt natürlich davon ab, ob Ihre MVVM-Architektur damit leben kann?).
Ereignis 1) Wenn die Bindung Ihrer Wizards den NotifyPropertyChanged-Wert erhöht: Weisen Sie Ihren Frame auf "Navigieren" zur entsprechenden Seite (wie in einer Eigenschaft in Ihrer Wizard-VM beschrieben).
Ereignis 2) Im Ereignis "Navigiert" des Rahmens, so dass Sie den Datenkontext der aktuellen Seite auf Ihre VM verweisen können.
Auf diese Weise steuert das Wizard ViewModel den Zustand des Wizards von Anfang bis Ende und kann auch die Schritte beschreiben, die einfach hinzugefügt, bearbeitet, usw. werden können.
Offensichtlich mag das nicht gut mit jedermanns Ansicht von MVVM zusammenpassen.
Sie können sich die Beispielanwendung ViewModel des WPF-Anwendungsframeworks (WAF) ansehen . Es zeigt, wie ein Assistent auf MVVM-Art implementiert wird.