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

Windows Presentation Foundation Discussion :

Problème SelectedItem d'un ComboBox à l'interieur d'un GridView [MVVM]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut Problème SelectedItem d'un ComboBox à l'interieur d'un GridView
    Bonjour,

    Dans une application utlisant le pattern MVVM:

    J'ai un ComboBox à l'intérieur d'un GridView :
    -Le GridView contient plusieurs colonne et une colonne contient un combobox.
    -Le GridView est bindé avec une source de données (liste d'objets List<A>)
    -Le Combobox est bindé avec une source de données différente (liste d'objets List<B>)

    L'objet A contient une reference Id de l'objet B.
    et je souhaite pour chaque ligne (Objet A) présélectionner dans le combobox l'element B en fonction de de l'Id de l'objet A en utilisant la propriété SelectedItem.

    Mais je trouve pas le moyen de le faire.
    Avez-vous une idée de comment faire ?

    Merci de votre aide

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Montre ton code XAML

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    <Grid Grid.Row="2">
                <ListView ItemsSource="{Binding ListeA}" MinHeight="50" x:Name="listPersons">
                    <ListView.View>                    
                        <GridView ColumnHeaderTemplate="{StaticResource BlueHeader}">
                            <GridViewColumn Header="Name" Width="100">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Name}"/>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Header="LastName" Width="600" >
                                <GridViewColumn.CellTemplate >
                                    <DataTemplate >
                                        <TextBlock Text="{Binding LastName}"  />
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn Header="Age" Width="200">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.ListeB}"
                                                  MinWidth="150"  VerticalAlignment="Center" SelectedItem="???????">
                                            <ComboBox.ItemTemplate >
                                                <DataTemplate >
                                                    <TextBlock Text="{Binding Age}" />
                                                </DataTemplate>
                                            </ComboBox.ItemTemplate>
                                        </ComboBox>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
    J'ai pas renseigner la propriété SelectedItem, car tout simplement je ne sait pas comment y procéder pour sélectionner par défaut l’élément dont l'id est est référencé dans l'objet A sur la même ligne ??

    D'avance Merci

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Si l'objet A contient une propriété IdB (par exemple) avec l'Id d'un objet B, il faut mettre SelectedValuePath="Id" (Id étant une propriété de l'objet B) et binder SelectedValue (et non SelectedItem) sur IdB

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListView}}, Path=DataContext.ListeB}"
              MinWidth="150"  VerticalAlignment="Center" SelectedValuePath="Id" SelectedValue="{Binding IdB}">

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    C'est exactement ça ... Merci

    Je ne suis pas doué en WPF, c'est ma première application professionnelle.

    Une autre question SVP :
    Maintenant : quand je sélectionne un autre élément dans la ComboBox, je veux Mettre à jour L'IdB de l'objet A (IdB) toujours sur la même ligne.

    Est ce que c'est possible avec le SelectedItem ou SelectedChange ? si oui comment ?

    Encore d'avance Merci.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par sou_rif Voir le message
    Une autre question SVP :
    Maintenant : quand je sélectionne un autre élément dans la ComboBox, je veux Mettre à jour L'IdB de l'objet A (IdB) toujours sur la même ligne.
    Normalement c'est déjà le cas avec le code que je t'ai montré

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/07/2009, 21h42
  2. Problème avec un composant ComboBox
    Par florette dans le forum Composants VCL
    Réponses: 4
    Dernier message: 08/05/2006, 13h07
  3. [C#] Problème de synchronisation de combobox
    Par WwiloO dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/12/2004, 19h56
  4. Problèmes d'évènements sur ComboBox
    Par bakaneko dans le forum MFC
    Réponses: 3
    Dernier message: 23/02/2004, 08h46

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