IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

VirtualizingStackPanel & Checkbox sur ItemTemplate: les Checkbox sont remises à 0


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut VirtualizingStackPanel & Checkbox sur ItemTemplate: les Checkbox sont remises à 0
    Hello,

    Dans une application, on prend une ComboBox et on définit son ItemTemplate pour dire que ce sont des CheckBox. Ensuite, on définit l'ItemPanelTemplate et on lui assigne un VirtualizingStackPanel.

    Si on exécutes l'application et que l'on coche des Checkbox, pas de soucis. Mais si ensuite on scrolle vers le bas puis que l'on re-scrolle vers le haut, les Checkbox précédemment cochées ne sont plus cochées....


    C'est clairement lié au VirtualizingStackPanel mais je ne vois pas comment résoudre le pb...

  2. #2
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    C'est clairement un problème de VirtualizingStackPanel puisque le même problème survient avec une ListBox qui a un CheckBox en ItemTemplate !

    C'est vraiment bizarre, et je trouve pas trop d'infos sur ça sur les forums SL (à part ton post).

    J'ai trouvé 2-3 work around avec la ListBox mais rien avec la ComboBox.

    Il resterait la solution de passer par un StackPanel mais je suppose que si vous avez choisi un VirtualizingStackPanel c'est pas pour rien.

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par Skyounet Voir le message
    C'est clairement un problème de VirtualizingStackPanel puisque le même problème survient avec une ListBox qui a un CheckBox en ItemTemplate !
    Donc tu confirmes que c'est pas mal qui hallucine mais que y'a bien un problème ? car j'ai testé le code du mec qui m'a répondu sur le forum SL et là, ca marche bien

    C'est vraiment bizarre, et je trouve pas trop d'infos sur ça sur les forums SL (à part ton post).
    Idem.. A croire que personne ne rencontre le pb...

    J'ai trouvé 2-3 work around avec la ListBox mais rien avec la ComboBox.
    Lesquels ? On peut pas tenter de les adapter pour la ComboBox ?

    Il resterait la solution de passer par un StackPanel mais je suppose que si vous avez choisi un VirtualizingStackPanel c'est pas pour rien.
    Vi, on charge bcp bcp d'éléments donc on virtualise pour des raisons de perf

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Donc tu confirmes que c'est pas mal qui hallucine mais que y'a bien un problème ? car j'ai testé le code du mec qui m'a répondu sur le forum SL et là, ca marche bien
    Ben je viens de tester avec la code du mec et effectivement ça fonctionne. Par contre ça ne fonctionne plus si tu enlèves le Mode TwoWay du binding.

    Lesquels ? On peut pas tenter de les adapter pour la ComboBox ?
    J'avais trouvé l'utilisation de binding twoway et également d'entourer la ListBox d'un scrollviewer (mais bon là on perd l'utilité du Virtualizing).

  5. #5
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Je peux pas mettre le binding en TwoWay car je fais pas de binding..... (sans commentaires )

    Mais bon, je peux essayer avec du binding en TwoWay, voir ce que ca donne.

  6. #6
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Bon, je vais avoir du mal à utiliser le binding alors.... une idée pour que ca marche sans le binding ?

  7. #7
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Bonjour,

    La discussion est un peu ancienne mais pas moins intéressante

    Sans le binding, il sera compliqué de mettre en place quelque chose vu que les VirtualizingStackPanels s'appuient sur les ItemTemplate uniquement. Sans Binding point de salut !

    Après quelques tests, je me suis aperçu que le problème était le même avec des TextBoxs dont le Binding est en OneWay.
    Et pour cause, le textbox est un control d'édition, il doit donc être lié à une valeur disponible en écriture/lecture. Supposons que l'on change le binding en OneWay, la valeur n'est plus accessible qu'en lecture mais la saisie dans la textbox est toujours disponible (mais non persistante) ! Un binding OneWay sur un control d'edition n'apporte que confusion pour l'utilisateur et parfois des problèmes liés à sa persistance (comme c'est le cas pour le VirtualizingStackPanel).
    Même chose pour les controls de visualisation de l'information (comme un TextBlock par exemple). Un binding en mode TwoWay est inadéquate.

    Dans notre cas, la donnée est accessible seulement en lecture (car le binding est en OneWay)
    1er solution :
    Pour un controle TextBox, on peut ne plus autoriser sa modification, on passe donc IsEnabled (ou ReadOnly) à false et tout fonctionne à nouveau.
    2em solution :
    On utilise un TextBlock et non un TextBox

    Pour notre CheckBox, le problème est le même :

    1er solution :
    On passe IsEnabled à false (en changeant le template on pourrait lui donner un look non griser)
    2em solution :
    Il n'y a pas de controle representant une CheckBox sans saisie (comme un TextBlock). On peut donc en créer un à partir d'images non clickable representant les états d'un checkbox :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WriteableBitmap imageChecked = new WriteableBitmap(new CheckBox() { IsChecked = true }, null );
    Voila, j'espère que ma contribution vous sera utile.

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Personnellement, je me suis abonné à un event du VirtualizingStackPanel et j'ai géré le truc à ce niveau. Pas propre mais ca marche....

  9. #9
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Restons pragmatique, tant que ca marche c'est une solution valable

  10. #10
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Thomas,

    Je serais curieux de savoir quelle est la méthode que tu as employé (si ce n'est pas trop pénible a décrire) car la gestion interne du VirtualizingStackPanel c'est pas toujours très clair.

  11. #11
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    je ne me rappelle plus très bien mais dans l'idée:
    - je me suis abonné à l'event du VirtualizingStackPanel et je sette un booléent
    - Dans l'event Check/Uncheck des combobox, je teste la valeur de ce booléen. S'il est à true, alors ce n'est pas une action de l'utilsateur mais c'est le panel qui recycle les éléments et dans ce cas, je ne fais rien.

  12. #12
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Pas bête du tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Aide sur les checkbox sur Oracle Forms Builder
    Par lamouche8 dans le forum Forms
    Réponses: 3
    Dernier message: 03/04/2009, 13h42
  2. [VB.NET] Boucler sur les checkbox de mon formulaire
    Par malhivertman1 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/08/2006, 10h51
  3. [checkbox] Sélectionner tous les checkbox
    Par GLDavid dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/05/2006, 17h05
  4. quels sont les checkbox qui sont cochés?
    Par debutant.informatique dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 16/03/2006, 21h18
  5. Réponses: 2
    Dernier message: 19/02/2006, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo