Wie kann ich einen Assistenten aus einer Windows Mobile-Anwendung implementieren?

8

Ich bin ein wenig neu in der Entwicklung von Windows Mobile (mit C # und dem kompakten Framework), daher bin ich mir nicht ganz sicher, wie ich das machen soll. Der Benutzer muss mehrere Seiten mit Informationen auf wizardartige Weise durchlaufen. Zu Beginn gibt es ein Login-Fenster.

Wie würde ich das umsetzen und umsetzen? Wäre ich nur für jede Seite mit unterschiedlichen Benutzereinstellungen ausgestattet und erstelle / zeige und vernichte / verstecke ich sie auf Anfrage? Oder muss ich verschiedene Formen erstellen und diese irgendwie zeigen?

BEARBEITEN (von einem anderen Benutzer als das OP)

Da ich auch hier keine gute Lösung gefunden habe und die Links von einigen Antworten in Windows Mobile 6.5 nicht nutzbar sind, beginne ich ein Bounty

Diese sahen vielversprechend aus, können aber für mobile 6.5

gebaut werden

Ссылка

Ссылка

Ссылка

Ссылка

Ссылка (wie oben, aber frühere Arbeit)

    
pbean 12.03.2010, 15:43
quelle

3 Antworten

6

Ich würde ein TabControl verwenden, um einen Assistenten zu "simulieren" ( beachten Sie, dass ich nicht persönlich ein TabControl in einem Windows Mobile / Compact FrameWork Kontext verwendet habe, aber ist ) offiziell von Microsoft als Teil des FrameWork für "Windows CE, Windows Mobile für Pocket PC" aufgeführt. Siehe: TabControl

In WinForms gibt es einen einfachen Trick, um die Registerkarten auszublenden, wenn Sie ein assistentenähnliches Benutzererlebnis erstellen möchten: Setzen Sie in der Form 'Load event den Bereich des Tabcontrols auf das DisplayRectangle des TabControls.

%Vor%

Wenn das für Sie funktioniert, ersparen Sie sich viel Mühe beim Verschieben von UserControls oder Panels. Sie können Ihre TabPages zur Entwurfszeit im visuellen Modus entwerfen und dann die Navigation von TabPage auf TabPage steuern du denkst am besten.

Sie möchten vielleicht die ursprüngliche Region des TabControls im Ereignis 'Load' des Formulars "abfotografieren", wenn Sie die Tabs in der Ansicht wiederherstellen möchten.

Hier ist ein kurzes Beispiel für eine Art und Weise, dies zu tun: eine Art "One-Way" Start-Ziel-Modell:

Definieren Sie ein Dictionary, in dem jeder Schlüssel eine TabPage ist, und der boolesche Wert jedes Key-Eintrags steuert, ob Sie dem Benutzer erlauben, zu dieser TabPage zu navigieren oder nicht.

%Vor%

Sie sollten dieses Dictionary vorbereiten, indem Sie so etwas im Form Load-Ereignis ausführen:

%Vor%

Die Navigationssteuerung in diesem Modell bedeutet, dass Sie den booleschen Wert der nächsten TabPage auf "true" setzen müssen, wenn Sie mit Ihren Kriterien die Kriterien für die Fertigstellung der aktuellen Seite erfüllt haben: Beispiel

%Vor%     
BillW 12.03.2010 16:14
quelle
3

Ich würde sehr geneigt sein, einen DI / IoC-Container dafür zu verwenden (insbesondere würde ich dieses verwenden, aber ziemlich viel jeder von ihnen sollte funktionieren).

Ich würde ein MainForm erstellen, das der "Host" der App ist. Auf dieser MainForm würde ich entweder einen DeckWorkspace oder einen TabWorkspace platzieren, je nachdem, wie der Benutzer navigieren soll. Wenn Sie nur vorwärts / rückwärts erlauben wollen, würde ich mit einem Deckworkspace gehen. Wenn sie mehrere Schritte überspringen dürfen, würde wahrscheinlich ein TabWorkspace sinnvoller sein.

Ich würde dann dem MainForm ein paar Buttons hinzufügen, die die Navigationsschaltflächen wären.

Ich würde dann ein SmartPart (Ansicht) für jede der Assistentenseiten erstellen. Unter der Haube sind dies UserControls, aber sie sind etwas, das die Wor4kspaces verwenden können.

Ich würde dann einen WizardService erstellen, der eine Zustandsmaschine für die Navigation enthalten würde, welche SmartParts für eine Vorwärts / Rückwärts-Darstellung usw. angezeigt werden.

Ich würde dann Moderatoren für jedes der SmartParts erstellen, um die Ansichten an den WizardService oder nur einen einzigen Moderator für die ganze Sache zu verkabeln. Dies hängt stark von der Komplexität der Wizard-Daten und der Beziehung der Daten von Schritt zu Schritt ab.

Weiter würde ich Ereignisse für die Navigationstasten verkabeln. Diese Ereignisse würden an den WizardService weitergeleitet, der bestimmen würde, wo wir zum Präsentator navigieren und ihn kontaktieren müssen, was wiederum die entsprechende Ansicht anzeigen und füllen würde.

BEARBEITEN

Ich habe ein solides Arbeitsbeispiel für einen Assistenten zusammengestellt, der auf WinMo / WEH läuft. Der exakt gleiche Code würde unter Windows CE oder sogar auf dem Desktop funktionieren. Sehen Sie in meinem Blog nach, um eine Erklärung zu erhalten, oder ziehen Sie den Code direkt aus die Codepages des Codeplex-Projekts .

    
ctacke 24.08.2011 14:40
quelle
1

Bezüglich der Wahl "UserControls" oder "Multiple Forms":

Beide funktionieren, aber MainForm + UserControls ist einfacher.

Siehe auch: Wie erstellt man am besten eine Windows Mobile-Anwendung mit mehreren Bildschirmen in C #

?     
Henk Holterman 12.03.2010 15:55
quelle