9
votes

Développement de l'assistant UI - WPF

Tout dans WPF:

Développement d'une application de l'assistant, l'utilisateur doit répondre à un certain nombre de questions simples avant d'apporter à l'application principale. L'application principale est ensuite préremplie avec les informations obtenues à partir de l'assistant.

J'ai commencé avec une fenêtre que j'ai ensuite prévue d'ajouter UserControls à. La fenêtre principale aurait la commande utilisateur dans la première rangée, puis des boutons suivants et précédents pour contrôler le déplacement entre les commandes de la deuxième rangée. De cette façon, je pouvais facilement contrôler la logique pour basculer entre des écrans tels que: xxx

mais pour une raison quelconque, les contrôles utilisateur n'ont pas de réglage pour ISVisible. Hourra.

Alors je pensais que je voudrais simplement utiliser des fenêtres séparées pour chaque section de l'assistant. Le problème avec cette approche est que maintenant, lorsque la fenêtre s'ouvre dans des positions aléatoires et par steppign à travers l'assistant avec ensuite, la prochaine fenêtre apparaît au hasard, ce qui est vraiment gênant et frustrant.

alors comment Puis-je développer un sorcier correctement? Je ne comprends pas pourquoi c'est si dur ... pas exactement la science de la fusée ... remplacer le texte et les contrôles et stocker l'entrée après avoir appuyé sur Suivant / Précédent!

Merci


1 commentaires

Il y a une propriété de visibilité, pas "isvissible".


6 Réponses :


3
votes

J'avais probablement d'abord à l'aide de la liaison de données et des sélecteurs de gabarit. Les formes de l'assistant se lient à une classe "WizardData", qui expose une liste de classes de base "WizardPage".

La classe WizardData peut exposer les propriétés définissant les informations correctes sur les formulaires et afficher une commande pour la page principale qui utilise un sélecteur de modèle pour déterminer le contrôle approprié à afficher en fonction du type actuel de la page Assistant particulière.

Cela ressemble à plus de travail que c'est vraiment. Il vous donne également l'avantage d'une bonne séparation entre le code et l'interface utilisateur (tous les "travaux" est effectué par les classes de WizardData et de Wizardpage) et la possibilité de tester la logique indépendante de l'interface utilisateur.

C'est aussi une manière très WPF / MVVM d'approcher du problème.


2 commentaires

Savez-vous où sont des exemples qui pourraient m'aider à commencer? Je ne sais pas comment faire ce que vous dites "Les formulaires de l'assistant se lient à une classe" WizardData ", qui expose une liste de" classes de base "Wizardpage" "


Je verrai si je peux jeter un exemple rapide ensemble.



0
votes

Je reconnais que cela ne répond pas directement à votre question, mais je pensais que je l'aurais mentionné comme une alternative possible. J'ai utilisé le contrôle de l'assistant d'Actipro avec de très bons résultats et quand j'ai besoin de soutien, ils ont été très réactifs. Je ne suis pas affilié à eux d'aucune façon; J'aime juste ne pas avoir à écrire la plomberie pour gérer un magicien.


0 commentaires

0
votes
  1. La propriété est appelée "visibilité".
  2. Je trouve que je fais que je fais mieux lorsque j'ajoute et en supprimant de manière dynamique des contrôles plutôt que de les cacher.

0 commentaires

8
votes

Vérifiez ce lien: http://www.codeproject.com/kb/wpf/internationalizedWizard.aspx C'est l'article sur l'assistant de construction dans WPF par Josh Smith, il semble être un bon modèle. J'ai trouvé que c'est utile pour moi, j'espère que vous allez aussi.


1 commentaires

"Nous sommes désolés, mais l'article que vous essayez de voir a été supprimé au 22 janvier 2021."



4
votes

Il existe également une source ouverte assistant d'avalon contrôle sur CodePlex.


0 commentaires

0
votes

Je cherchais aussi une solution d'assistant aussi. J'ai la nécessité de coller avec des composants de stock WPF afin que j'ai mis en place l'assistant à l'aide d'une forme standard et d'une commande de tabulation.

Je ne cache que les onglets au moment de l'exécution, donc il est disponible dans l'IDE. Au moment de l'exécution, utilisez simplement le dos, suivant, finir ... pour naviguer à travers les éléments de l'onglet

fonctionne bien


0 commentaires