WPF c# et xaml - C#/.NET managed - Programmation
Marsh Posté le 10-10-2015 à 13:05:35
Tu dois avoir un tas de réponses en cherchant dans un moteur de recherche sur "wpf dynamic control creation" et on ne peut pas te pondre des réponses de 3 pages pour une chose sur laquelle tu trouveras plein de tutos, donc il faudrait que tu précises un peu la question et/ou les soucis rencontrés.
Outre la creation dynamique tu devrais regarder aussi les custom controls, user controls et cie.
Pas besoin de MVVM effectivement.
Marsh Posté le 11-10-2015 à 01:28:28
Merci pour ta réponse. Je vais creuser ce "dynamic control creation".
J'ai commencé à regarder les user control et mon soucis concerne la récupération d'événements.
Par exemple : l'utilisateur souhaite compléter les infos d'un contact inscrit dans la bdd. Il clique sur un bouton pour faire apparaître un onglet comprenant les informations du contact. Ce formulaire "n'existe pas" à l'ouverture, je pensais faire un user control comprenant tous les champs et boutons nécessaires. Maintenant la question est comment pré remplir ce formulaire avec les infos du contact et surtout mettre à jour la base en cliquant sur un bouton.
Encore merci pour les réponses.
Marsh Posté le 12-10-2015 à 22:44:03
Alors j'ai creusé les évènements sur les usercontrol. J'ai fait une petite appli test avec un usercontrol comprenant un bouton et un label. J'ai mis une propriété publique pour pouvoir modifier le contenu de mon label.
Sur ma fenêtre j'ai juste un bouton. Si je clique sur mon bouton, le user control est ajouté et je peux l'ajouter plusieurs fois.
Quand je clique sur le bouton d'un des usercontrol ainsi ajouté, l'évènement est reconnu.
Maintenant j'aimerais pouvoir savoir quel bouton a été sollicité et modifier le label lié.
Pourriez vous m'aider ?
Voila mon code du usercontrol :
Code :
|
Le code xaml :
Code :
|
Le code xcml de la fenêtre:
Code :
|
Le code cs qui va avec :
Code :
|
Marsh Posté le 13-10-2015 à 09:25:13
Y a de l'idée. C'est assez compliqué comme mise en oeuvre pour un truc aussi simple mais on sent que tu comprends et applique les concepts, c'est bien.
Pour info au lieu de
Uc.buttonClick += new EventHandler<EventArgs>(Uc_btn_Click);
tu peux juste écrire
Uc.buttonClick += Uc_btn_Click;
Ca revient au même.
Idem pour buttonClick.Invoke(sender, EventArgs.Empty);
Qui peut juste s'écrire buttonClick(sender, EventArgs.Empty);
Concernant ta question, tu peux par exemple utiliser l'EventArgs pour passer des infos supplémentaires.
Marsh Posté le 16-10-2015 à 20:02:03
Salut, j'ai creusé les EventArgs mais j'ai vraiment du mal à trouvé un tuto "simple". Je voudrais juste récupérer le Uid de mon usercontrol inséré dynamiquement. J'avoue que je veux bien un petit coup de main!!
Merci d'avance.
Marsh Posté le 17-10-2015 à 09:08:21
Après plusieurs test infructueux, je me rend compte que le Uid ne va pas me servir. En fait j'aimerais que lors du clique, je puisse récupérer le nom du usercontrol afin d'agir sur ce qu'il y a à l'intérieur comme, dans mon exemple, changer la valeur du label. Une fois que j'aurais compris ça, j'essaierai de faire pareil mais en récupérant la valeur d'une textbox qui sera à la place de mon label. Merci pour votre aide.
Marsh Posté le 17-10-2015 à 10:48:12
Heureusement la débilité n'est mortelle ! (Sinon l'enterrement aurait eu lieu lundi !!) Quand je lis 15fois que le usercontrol est autonome ça veut peut être dire qu'il est... Autonome!!! Du coup dans l'événement click de mon bouton a l'intérieur du usercontrol, je lui dit quoi faire sur le usercontrol et ça fonctionne!!! Merci pour votre aide
Marsh Posté le 17-10-2015 à 14:47:06
Oui effectivement, rien ne t'oblige à propager l'événement pour le gérer depuis ta feuille parente comme tu le faisais plus haut, tu peux très bien le gérer localement si ça te permet de faire ce que tu veux.
Ca dépend complètement de l'utilisation, mais propager a aussi son utilité.
N'hésite pas à l'avenir. Tu peux aussi venir poser tes questions dans le topic en lien dans ma signature si tu veux.
Marsh Posté le 06-10-2015 à 22:04:36
Bonjour à tous,
Je fait actuellement un petit logiciel tout simple et du coup, pour me faire la main, j'ai décidé de passer au WPF. Jusqu'ici tout va bien, j'ai créer une interface et j'ai même réussi à faire en sorte que si l'utilisateur clique sur un bouton un onglet se cré. (Ce qui est déjà une victoire en soi!!). Maintenant je voudrais savoir comment faire pour remplir cette "page" avec un formulaire (des boutons où je veux, des champs à remplir où je veux...)
Je pensais soit c'est possible directement par le code C# mais je vois pas comment définir et placer les composants, soit "préfabriquer" les onglets dont j'ai besoin en xaml et les "incruster" dans l'onglet au moment de la création. Mais ça non plus je sais pas comment le mettre en place.
Merci pour votre aide.
Pour info, j'ai pas mal cherché sur Google et autre et j'ai pas trouvé de réponse qui me conviennes (et oui j'ai vu le MVVM mais ça me fait un peu l'impression de prendre un semi remorque pour trimbaler un paquet de mouchoir!!)
Encore merci
Nico