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 :

Listbox et WrapPanel


Sujet :

Windows Presentation Foundation

  1. #1
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut Listbox et WrapPanel
    Bonjour tout le monde,

    je suis en train de développer une petite application en WPF et je bute sur un point qui me semblait pourtant assez simple. J'aimerai afficher sous forme d'une grille à deux colonnes des éléments. Pour cela j'utilise une listBox de cette façon :

    Code xaml : 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
    <ListBox Name="lbTest" ItemsSource="{Binding}" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <WrapPanel Orientation="Horizontal" HorizontalAlignment="Stretch" />
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
     
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal">
                            <Image Height="100" Width="100" />
                            <StackPanel Orientation="Vertical">
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Date de naissance :</TextBlock>
                                    <TextBlock Text="{Binding DateDeNaissance}"></TextBlock>
                                </StackPanel>
     
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Adresse :</TextBlock>
                                    <TextBlock Text="{Binding Adresse}"></TextBlock>
                                </StackPanel>
     
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock>Rang Gemellaire :</TextBlock>
                                    <TextBlock Text="{Binding RangGemellaire}"></TextBlock>
                                </StackPanel>
     
                            </StackPanel>
     
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
     
            </ListBox>

    Le problème c'est que j'aimerai que chaque élément prenne 50% de la largeur de la listbox (pour pouvoir en afficher deux par ligne). Or je ne sais pas comment faire. Auriez-vous une idée ?

    Merci par avance

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Bonjour,

    pourquoi ne pas simplement utiliser une Grid avec deux colonnes ?

  3. #3
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Bonjour beekeep

    Oui je suis pas fermé à cette solution. Mais vu que je fonctionne en binding comment tu fais pour attribuer le bon numéro de colonne ?

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Points : 3 325
    Points
    3 325
    Par défaut
    Tu peux remplacer le WrapPanel par un <UniformGrid Columns="2" />.

  5. #5
    Expert confirmé

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 065
    Points : 4 229
    Points
    4 229
    Par défaut
    Tu veux afficher les libellés d'un côté et les données de l'autre ? Si c'est le cas c'est comme ça, sinon tu peux t'inspirer de ce résultat:
    Code xaml : 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
            <ListBox Name="lbTest" ItemsSource="{Binding}" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Vertical" >
                            <Image Height="100" Width="100" />
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="1*"></ColumnDefinition>
                                    <ColumnDefinition Width="1*"></ColumnDefinition>
                                </Grid.ColumnDefinitions>
     
                                <StackPanel Orientation="Vertical" Grid.Column="0">
                                    <TextBlock>Date de naissance :</TextBlock>
                                    <TextBlock>Adresse :</TextBlock>
                                    <TextBlock>Rang Gemellaire :</TextBlock>
                                </StackPanel>
     
                                <StackPanel Orientation="Vertical" Grid.Column="1">
                                    <TextBlock Text="{Binding Adresse}"></TextBlock>
                                    <TextBlock Text="{Binding DateDeNaissance}"></TextBlock>
                                    <TextBlock Text="{Binding RangGemellaire}"></TextBlock>
                                </StackPanel>
                            </Grid>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
     
            </ListBox>

  6. #6
    Rédacteur

    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2007
    Messages : 494
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par beekeep Voir le message
    Tu peux remplacer le WrapPanel par un <UniformGrid Columns="2" />.

    Super je ne connaissais pas cette technique merci beaucoup

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

Discussions similaires

  1. DrawItem d'un listbox...
    Par scorpiwolf dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/06/2007, 15h50
  2. [Listbox] ScrollBar Horizontal
    Par haleem dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 20/04/2005, 07h53
  3. Recuper les items de ListBox d'une autre application [API?]
    Par Shamanisator dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h32
  4. [Canvas] Listbox, couleur et multiselect
    Par rbag dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/09/2002, 13h02
  5. Copier le texte d'un ListBox dans le clipboard.
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 3
    Dernier message: 18/08/2002, 08h20

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