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 :

Mettre à jour une combobox pendant un bind


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Par défaut Mettre à jour une combobox pendant un bind
    Bonjour,

    Je débute en Silverlight et je ne sais pas comment résoudre ce problème :

    Dans un formulaire j'ai une combobox dont la liste des éléments dépend de la valeur d'une autre combobox. Je n'arrive pas à faire un bind de mon formulaire (la liste des éléments de ma combobox n'est pas mise à jour au bind de l'autre combobox).

    Pour être plus clair/concret l'élément de ma form appartient à une sous-catégorie (dont la liste est donnée dans une combobox). Comme les sous-catégories sont nombreuses elles sont classées par catégories principales (l'autre combobox) et je n'affiche que les sous-catégories appartenant à la catégorie principale. Mais lorsque je veux faire le bind de ma form je n'arrive pas à n'afficher dans la combobox sous-catégories que les éléments appartenant à la catégorie sur laquelle se fait le bind.

    Quelqu'un a une idée pour me faire avancer ?
    Merci.

  2. #2
    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 : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Tu peux créer une propriété contenant les données filtrées et binder ta sous-combo dessus.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Par défaut
    Citation Envoyé par Samoteph Voir le message
    Tu peux créer une propriété contenant les données filtrées et binder ta sous-combo dessus.
    Merci pour la réponse.

    En gros c'est déjà ce que je fais, mais je ne vois pas comment mettre à jour ma liste de sous-catégories au bind.

  4. #4
    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 : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Par exemple (code non testé) :

    Code c# : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
     
    public ObservableCollection<MonObjet> MonObjetCollection
    {
         get
         {
            //...
         }
     
         private set
         {
            //on fixe la valeur et on la notifie
         }     
    }
     
    public ObservableCollection<MonSousObjet> MonSousObjetCollection
    {
         get
         {
            //...
         }
     
          set
          {
            //on fixe la valeur et on la notifie
          }
    }
     
    public MonObjet SelectedMonObjet
    {
         get
        {
             return this.selectedMonObjet
        }
     
        set
        {
             if( this.selectedMonObjet != value )
             {
                 this.selectedMonObjet = value;
     
                 // ici on filtre la collection de SousObjets !
                 this.FilterMonSousObjetCollection(value);
     
                 // notification de changement
                 this.OnNotifyPropertyChanged("SelectedMonObjet");
             }
        }
    }
     
    private MonObjet selectedMonObjet = null;
     
    private FilterFilterMonSousObjetCollection(MonObjet monObjet)
    {
        // ici je filtre MonSousObjetCollection d'après la valeur MonObjet selectionnée
    }

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <!-- Combo -->
    <ComboBox ItemsSource="{Binding MonObjetCollection}" SelectedItem="{Binding SelectedMonObjet,Mode=TwoWay}">
    <!-- Sous Combo -->
    <ComboBox ItemsSource="{Binding MonSousObjetCollection}">

    L'important est de ne pas oublier les notifications dans les objets que tu modifies

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Par défaut
    Ah merci je vois le truc.

    Mais ça ne marche pas tout à fait, la liste des sous-catégories est bien mise à jour, mais le binding sur la combobox ne se fait pas. Comme il faut une requête asynchrone à la base pour mettre à jour la combobox je pense que le binding de la valeur se fait avant la mise à jour de la combobox

    Merci encore pour l'aide.

  6. #6
    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 : 52
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Comme il faut une requête asynchrone à la base pour mettre à jour la combobox je pense que le binding de la valeur se fait avant la mise à jour de la combobox
    Je ne vois pas le problème (même avec un accès asynchrone à une base).
    La comboBox se mettra à jour si tu fais une notification (OnNotifyPropertyChanged) sur la collection qui pointe sur son ItemsSource.

    Si tu veux allez plus loin dans la problématique poste nous un peu de code

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

Discussions similaires

  1. Impossible de mettre à jour une combobox
    Par nislog dans le forum Visual Studio
    Réponses: 2
    Dernier message: 01/06/2011, 13h18
  2. Réponses: 6
    Dernier message: 21/10/2009, 17h39
  3. Mettre à jour une base sous SQL SERVER 2000
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 11/02/2005, 12h24
  4. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56
  5. Mettre à jour une table depuis une autre
    Par rsc dans le forum SQL
    Réponses: 4
    Dernier message: 09/07/2004, 10h08

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