Bonjour,
j'ai un formulaire que je crée ds le code behind (selection de date, liste deroulante) je souhaiterais mettre une listbox avec des element selectionnable (multiple).
comment faire pour mettre cette listbox dans mon formulaire?
Bonjour,
j'ai un formulaire que je crée ds le code behind (selection de date, liste deroulante) je souhaiterais mettre une listbox avec des element selectionnable (multiple).
comment faire pour mettre cette listbox dans mon formulaire?
Tu crées ta ListBox et tu l'ajoutes... Où est-ce que tu bloques ?
j'ai tester des listeboxfiltre.item.add; j'ai tester listeboxfiltre.itemssource=list<string> .... je n'arrive pas a visualiser ma listebox correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class Formulaire { [Display(Name = "Date début :", Description = "Saisir une date début: DD/MM/YYYY")] public DateTime DateDebut{ get; set; } [Display(Name = "Date fin :", Description = "Saisir une date de fin: DD/MM/YYYY")] public DateTime DateFin { get; set; } public ListBox listeboxfiltre { get; set; } public Formulaire(int year, int month, int day) { this.DateDebut = new DateTime(2010, 02, 01);//A SUP APRES TEST this.DateFin = new DateTime(2010, 02, 28); //A SUP APRES TEST } }
Hein ?
Une ListBox dans un business object ?
Est-ce que au moins tu ajoutes ta TextBox dans un containeur (Grid, StackPanel...) avant ?
alors en fait dans mon XAML de la page j'ai les balise formulaire.
ensuite au chargement de la page:
alors ça marche nikel pr les datetime et les liste déroulante. mais pas pr une listbox. (dnas le code , formulaire en minuscule represente le formulaire créé en xaml)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 //creation du formulaire DateTime today = DateTime.Now; int year = today.Year; int month = today.Month; int day = today.Day; Formulaire formulaire1 = new Formulaire(year, month, day); formulaire.CurrentItem = formulaire1;
Tu dois redéfinir le template de ton DataForm pour prendre en compte ta ListBox et binder son ItemsSource sur ta collection. Mais pour ça tu dois d'abord enlever ta ListBox de ta classe Formulaire et la remplacer par une List<T> représentant les éléments que tu souhaites voir apparaitre dans ta ListBox.
euh je n'ai pas tout compris.
comment et pourquoi redefinir le template (les listbox sont bien prise en compte si on les met coté xaml...)
je pensé que c'était lier à un mot clé spécial pour les listbox (comme typeterminal pour les liste déroulante :)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public TypeTerminal tri { get; set; } public enum TypeTerminal { nom prenom }
C'est pas une histoire de mot clé. TypeTerminal c'est un enum et le DataForm sait que lorsqu'il est bindé sur une propriété de type enum il doit afficher un DropDown.
Pour ta ListBox je te dis que tu dois redéfinir le template pour la faire s'afficher.
Tu as l'air de tout mélanger : contrôles, binding, template, business object...
En effet je suis un peu perdu la (merci de ton aide d'aileurs).
je comprend pas ce qu'il y a a modifié reelmeent dans mon formulaire. en fait je comprend pas pkoi il faut aller toucher au template alors que de base il prend bien les listBox (formulaire créé précedement en xaml et les listbox fonctionnaient) et ensuite ba d'apres des tuto il falait créer une classe formulaire et creer un objet formulaire à entrer en paramatre du Formulaire du xaml.
Si tu expliquais ce que tu voulais faire et nous montrer ton code (C# et Xaml) déjà existant ça nous aiderait![]()
voici le code:Si tu expliquais ce que tu voulais faire et nous montrer ton code (C# et Xaml) déjà existant ça nous aiderait
Mapage.xaml :Mapage.cs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 <dataFormToolkit:DataForm Margin="0,5,0,0" DescriptionViewerPosition="Auto" x:Name="formulaire" CommitButtonContent="Valider" Header="Faites votre sélection" AutoCommit="True" AutoEdit="true" CommandButtonsVisibility="Commit" ValidatingItem="formulaire_ValidatingItem" HorizontalAlignment="Left" > </dataFormToolkit:DataForm>
Formulaire.cs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 DateTime today = DateTime.Now; int year = today.Year; int month = today.Month; int day = today.Day; Formulaire formulaire1 = new Formulaire(year, month, day); formulaire.CurrentItem = formulaire1;
ceci fonctionnent bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class Formulaire { [Display(Name = "Trier par :")] public TypeTerminal tri { get; set; } public enum TypeTerminal { Nom, Date } [Display(Name = "Date début :", Description = "Saisir une date début: DD/MM/YYYY")] public DateTime DateDebut { get; set; } [Display(Name = "Date fin :", Description = "Saisir une date de fin: DD/MM/YYYY")] public DateTime DateFin { get; set; } public FormulaireTri(int year, int month, int day) { this.DateDebut = new DateTime(year, month - 1, day); this.DateFin = new DateTime(year, month, day); } }
maintenan je souhaiterai simplement avoir une listbox multiselection en + dans mon formulaire afin d'avoir l'équivalent de ce qui marche quand on le cré en xaml (j'ai pas remis le detail des autres composant de mon formulaire) :
en esperant avoir été plus clair
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <dataFormToolkit:DataForm Margin="0,5,0,0" DescriptionViewerPosition="Auto" x:Name="formulaire" .... > <ListBox>****</ListBox> </dataFormToolkit:DataForm>
Et donc je te répète, il faut que tu modifies le template d'affichage de ton DataForm pour incorporer ta ListBox et la binder sur une propriété de ton objet Formulaire.
Pour le moment tout s'affiche correctement puisque tu as seulement des propriétés simples (un enum et 2 datetimes) donc le DataForm sait comment afficher ton objet. Or toi tu veux customiser cet affichage puisque tu veux ajouter une ListBox, donc tu dois modifier le Template de ton DataForm pour rajouter tous tes champs (y compris ta DropDown et ton Calendar pour tes DateTime).
et d'apres mon code tu pourrais mé préciser comment modifier ce fameux template ?
je suis un peu largué la... j'ai regarder ccomment modifier le template mais je vois pas la différence entre ça et tout mettre en dur. ce que je ne souhaite pas.
Tu peux tout trouver sur le net
Exemple ici : http://www.a2zdotnet.com/View.aspx?id=134
oui crois moi que j'ai tourner sur pas mal de site pour ça mais en vain...
je ne comprends pas trop l'interet d'un template ici. (utile quand on a la lecture, le edit, l'ajout pour précisé le binding à chaque fois) moi j'au simplement 2 champ date et une listebox, (pas de edit, pas d'ajout) donc si je suis cette vois la autant construire mon dataform dans le xaml et binder directement sur les variable... (cela dit je sais meme pas si c'st possible a tester, mais dans ce cas ce n'est plus créé dans le code behind.)
Tu veux qu'elle fasse quoi ta ListBox multi-selection ?
je rempli cette listbox avec des données récuperer par un service wcf, ensuite je selectionne ce que je veux et lorsque je valide le formulaire je récupère la liste des items que j'ai selectionné.
ma classe formulaire c'est pour créer un formulaire sans rien mettre dans le xaml (sauf la balise dataform bien sur)
la je créé un objet formulaire, je " l'injecte " dans mon formuliare du xaml et celui ci recupere les parametres de cet objet
(je n'ai pas pas les liens sous la main pour te montrer un exemple mais je pense que tu dois voir de quoi je parle)
Oui je comprends, mais quel est le lien entre ta ListBox et ta classe Formulaire ?
Est-ce que le fait de sélectionner tel ou tel chose dans la LIstBox modifie une propriété de ton objet Formulaire ?
Partager