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 :

Disposition dynamique des éléments enfants dans un StackPanel


Sujet :

Windows Presentation Foundation

  1. #1
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut Disposition dynamique des éléments enfants dans un StackPanel
    Bonjour,

    j'aimerais savoir quelles propriétés je dois paramétrer pour que les éléments enfants d'un StackPanel s'agrandissent automatiquement, de manière à occuper tout l'espace du panel et se répartissant l'espace à part égale (sauf contre indication de leur propriétés Min-MaxWidth/Height).

    Le code départ ressemble à ceci :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        <StackPanel>
            <Button>Hello</Button>
            <Button>Hello2</Button>
        </StackPanel>

    Pour la largeur, les boutons occupent tout l'espace disponible. En revanche comment faire pour que les deux boutons occupent chacun une moitié de l'espace disponible en hauteur ?
    (\ _ /)
    (='.'=)
    (")-(")

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Salut,

    il faut utiliser un grid.
    Selon ce que tu dis tu as deux choix :
    1) tu veux tes deux boutons sur la moitié de la hauteur et le nombre de boutons ne change pas => grid
    2) Le nombre de boutons change :
    encore deux choix :
    2-1) Tu laisses un scroll avec une hauteur de bouton fixe
    2-2) tu veux que tous les boutons ne dépassent pas la hauteur du container, il faudra utiliser un moyen pour le faire (que je ne connais pas)

    Tu devrais etayer un peu plus tes besoins pour savoir ce que tu veux réellement comme comportement

    @bientot

  3. #3
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Ben en fait c'est pas que les boutons occupent pas tout l'espace du StackPanel, c'est le StackPanel qui se redimensionne à la taille de son contenu... C'est quoi le contrôle parent de ton StackPanel ? Un autre StackPanel ?

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Effectivement, le StackPanel s'adapte automatiquement à son contenu: ce que tu veux ressemble plus à une grille, en effet...

  5. #5
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Bon ben vous avez tous les trois raisons !

    --> J'en étais effectivement venu à utiliser un Grid.
    --> Au final mon besoin est celui d'une barre d'outil donc --> ToolBar et je crée à la main mes objets "Tool" dérivant de UserControl (en utilisant un Grid pour placer mes boutons)
    --> Je ne savais pas que le StackPanel s'adaptait à son contenu. Dans mon exemple il était placé dans une Windows ou dans une case de Grid.

    Merci à vous.
    (\ _ /)
    (='.'=)
    (")-(")

  6. #6
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Citation Envoyé par FRED.G Voir le message
    et je crée à la main mes objets "Tool" dérivant de UserControl
    Quoique je me tâte car je pensais factoriser du code en créant un contrôle type. Mais en UserControl les possibilités d'application de style sont limitées, donc autant composer mes éléments directement là où je les utilise (emboiter des éléments en xaml c'est souple et rapide. Je ne centralise donc que le(s) style(s) applicables aux composants.

    WPF, c'est dur et c'est long, tout le contraire de ce qui était promis, mais c'est davantage de ma faute qu'un problème de conception ! C'est moi qui raisonne trop à l'ancienne et ce sont mes préjugés et mon ignorance qui font toujours perdre du temps. Bref, WPF ça tient ses promesses, faut juste s'habituer. -->
    (\ _ /)
    (='.'=)
    (")-(")

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2003
    Messages
    837
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2003
    Messages : 837
    Points : 377
    Points
    377
    Par défaut
    Fred.G :
    Concernant la difficulté de WPF : Je plussoie !!!!! C'est d'un compliqué quand on vient des winforms... Néanmoins, quand j'ai un coup de blues/Nerfs ou autre, je pense à une chose "Mais bon sang, c'est quand meme puissant ce qu'on peut faire avec"

    Concernant ta toolbar : Attention ! le stackpanel n'est pas obligatoirement utilisable comme ca (par rapport au fait qu'il se cale sur la taille de son contenu).
    Imagines le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <StackPanel Width="300" Height="500">
    <DockPanel><Button DockPanel.Dock="Top"></Button></DockPanel>
    </StackPanel>
    Ou un truc dans ce gout là, eh bien le comportement sera totalement différent ! (j'ai pas le temps de tester le code mais bon)
    Donc c'est à toi de voir ce que tu souhaites faire et composer en fonction.

    Pour en revenir à la complexité de WPF, je pense qu'elle vient surtout du fait que l'on puisse composer comme on veux nos controles, on finit par s'y perdre

  8. #8
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Ben en fait, j'utilise directement les contrôles de barre d'outils fournis.

    Et dans ma barre d'outils, je compose mes "outils" à la main. Par exemple, pour un genre de "UpDownToolControl" :

    Code xml : 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
                    <Border BorderThickness="2" BorderBrush="{StaticResource SplitBkg}">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="*" />
                                <RowDefinition Height="*" />
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <TextBlock Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" 
                                       TextAlignment="Center" 
                                       MinWidth="60" 
                                       VerticalAlignment="Center" HorizontalAlignment="Stretch">
                                Colonnes
                            </TextBlock>
                            <Button Grid.Column="1" Grid.Row="0" Click="AddDayColumn" MinWidth="40" MinHeight="30">+</Button>
                            <Button Grid.Column="1" Grid.Row="1" Click="RemoveDayColumn" MinWidth="40" MinHeight="30">-</Button>
                        </Grid>
                    </Border>
    (où on voit que j'utilise un Grid pour positionner mes boutons d'incrémentation)
    (\ _ /)
    (='.'=)
    (")-(")

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/05/2007, 18h08
  2. Afficher des éléments HTML dans une WindowsForm
    Par flagadda dans le forum Windows Forms
    Réponses: 3
    Dernier message: 16/04/2007, 17h31
  3. [VBA-E]Copier des éléments excel dans word
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/03/2007, 10h11
  4. Parcours dynamique des éléments d'un form
    Par leminipouce dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 02/10/2006, 19h09
  5. [Collections]enlever des éléments répétés dans une ArrayList
    Par apan dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 23/03/2006, 13h28

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