CH4BRN
Messages postés51Date d'inscriptionlundi 19 février 2018StatutMembreDernière intervention 6 février 2021
-
16 avril 2018 à 16:22
CH4BRN
Messages postés51Date d'inscriptionlundi 19 février 2018StatutMembreDernière intervention 6 février 2021
-
17 avril 2018 à 16:27
Commençons par un haïku du XII eme siècle:
Résonne, clavier,
Sous les doigts, c'est l'été,
Bon sang de #*%$@ d'items control.
Après ce cours manque de respect envers la culture japonaise ( c'était pour vous épater, je ne le cache pas.), le vif du sujet :
Dans une application WPF respectant scrupuleusement le pattern MVVM, j'ai une vue avec une liste déroulante (ComboBox) et un wrap panel contenant divers petits stack panels, contenant eux même chacun un ensemble de controles ( Label + comboBox ou Label+TextBox).
L'idée est que, quand on sélectionne une option de la ComboBox, le stack panel contenant les contrôles correspondant au choix s'affiche.
Par exemple :
Je choisis "Type" dans la première comboBox, et le panel contenant le label type et la combobox type apparait.
J'ai résolu ce problème de la manière suivante :
Les éléments de ma première comboBox sont des CheckBox, avec les propriété "IsChecked" Bindées à des propriétés "AddNomDuControl_IsChecked", de type bool, dans mon ViewModel .
Mes "petits" stackpanels ont leur propriété "visibility" bindées à des propriété "NomDuControle_IsVisible" de type "Visibility".
Quand je "coche" une checkbox, "AddNomDuControl_IsChecked" passe a true, et son mutateur (set), en plus d'affecter "value" au champs correspondant, passe la propriété "NomDuControle_IsVisible" de "Collapsed" à "Visible".
J'obtiens le résultat attendu, et comme ils sont dans un WrapPanel, il s'affiche les uns à la suit des autres, dans l'ordre ou je les ai créé.
MAIS ...
Je trouve pas ça propre, et encore moins élégant. J'en ai parlé avec mon "supérieur", et il m'a conseillé d'utiliser à la place des "ItemsControl". Seulement voila, j'ai du mal, avec les exemples que j'ai trouvé, à comprendre comment faire.
D'après ce que j'ai compris, il faut déclarer un ItemsControl avec un ItemsTemplate qui sert de modèle, mais après je sèche complétement.
Maintenant il faudrait que j'arrive a cumuler les affichages.
EDIT : J'arrive a cumuler les affichages, mais là j'ai un vrai blocage :
Comment faire pour récupérer la valeur d'une textBox dans un items control?
Parce que la valeur va bien dans une variable de mon objet DisplayedItem, mais pas du tout dans mon ViewModel...
Whismeril
Messages postés18414Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023624 17 avril 2018 à 13:31
Salut, en tant que contributeur je devrais faire la promotion de CodeS SourceS.
Cependant, il faut se rendre à l’évidence, la communauté n’est plus ce qu’elle a été.
Nous ne sommes plus qu’une poignée à tenter d’aider, et je suis le seul en WPF. Or tes questions me dépassent.
Quand j’ose répondre à l’un de tes sujets, je ne fais que chercher sur d’autres forums.
Autant éviter une étape, tourne toi vers StackOverFlow et MSDN.
C’est en anglais, c’est peut-être un frein. Mais ça n’est malheureusement pas chez nous que tu trouveras quelqu’un du niveau nécessaire à t’aider, et quoiqu’il en soit l’anglais est obligatoire en programmation.
Il y a aussi devellopez.net où la communauté C# est plus active, et là c’est en français.
CH4BRN
Messages postés51Date d'inscriptionlundi 19 février 2018StatutMembreDernière intervention 6 février 2021 17 avril 2018 à 13:53
Salut.
Merci de ta franchise. Je suis déjà sur stackOverflow, c'était presque, disons, par "chauvinisme" que je m'accrochais à CodeS SourceS, et le côté "petit comité" n'était pas pour me déplaire.. Mais je ne veux pas t’assommer de questions obscures!
Whismeril
Messages postés18414Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention 7 juin 2023624 17 avril 2018 à 14:58
Tu ne m’assomes pas. Mais malheureusement on ne peut rien t’apporter.