Connaitre la dimension d'une listbox incluse dans une grille dont la dim est * ( [Résolu]

Messages postés
33
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2013
- - Dernière réponse : farrakis
Messages postés
33
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2013
- 25 avril 2012 à 22:18
Bonjour

J'ai dans une fentre WPF, le code XAML suivant :

       
        <Grid.RowDefinitions>
            <RowDefinition Height="50"></RowDefinition>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="20"></RowDefinition>
        </Grid.RowDefinitions>

        <ListBox Name="maFenetreDessin"
            Grid.Column="1" Grid.Row="1"
        </ListBox>


J'ai besoin de connaitre la hauteur de ma listbox.

Quand je tente un
maFenetreDessin.Height
dans le code behind, j'obtiens NaN.

Comment obtenir la hauteur de ma listbox (par code behind ou binding WPF)

Merci de votre aide...
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
14590
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 novembre 2019
137
3
Merci
Bonjour,

Je ne maitrise pas WPF, mais je pense que si tu nommes le composant Grid, et que tu accèdes aux propriétés de ses lignes, je pense que tu aura 'information.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualVasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 218 internautes nous ont dit merci ce mois-ci

Commenter la réponse de NHenry
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
214
0
Merci
Bonjour,
J'ai des difficultés à comprendre.
Pour moi : la hauteur d'une listbox n'est que celle qu'on a donné, graphiquement, à ce contrôle. Elle ne révèle rien d'autre que cela et je ne vois pas trop à quoi te servirait de connaître la hauteur ainsi définie.
Si tu tiens absolument à la connaître, je ne vois rien d'autre qu'une capture d'écran, puis de mesurer la hauteur de son image !.
A quoi diable te sert-il de savoir quelles dimensions graphiques ont été données à ce contrôle ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
33
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2013
0
Merci
Alors justement, ce n'est pas moi qui donne la hauteur à la listbox, mais WPF qui la gère de façon à remplir la fenêtre principale.

La raison pour laquelle je veux récupérer cette dimension est exposée ci-dessous.

Je veux binder dans ma listbox une collection d'objets (jusque là, rien d'exceptionnel). Sauf que ces objets ne seront pas présentés sous forme d'une liste, mais sous forme graphique, leur position dans la listbox étant définie par leur propriété X et Y.

Voila le code XAML complet décrivant la listbox


        <ListBox Name="maFenetreDessin"
            Grid.Column="1" Grid.Row="1" Margin="0,2,0,2"
            IsSynchronizedWithCurrentItem="True" 
            ItemsSource="{Binding}">

            <ListBox.ItemsPanel>
                
                    <Canvas Name="myCanvas"/>
                
            </ListBox.ItemsPanel>

            <ListBox.ItemTemplate>
                <DataTemplate>
                    
                </DataTemplate>
            </ListBox.ItemTemplate>

            <ListBox.ItemContainerStyle>
                <Style>
                    <Style.Setters>
                        <Setter Property="Canvas.Left" Value="{Binding Path=X}"/>
                        <Setter Property="Canvas.Top" Value="{Binding Path=Y}"/>
                    </Style.Setters>
                </Style>
            </ListBox.ItemContainerStyle>
        </ListBox>



Jusque là ça marche parfaitement, mais j'ai besoin de connaitre la dimension de la listbox pour pouvoir faire une mise à l'échelle de mes objets..

Voila, en espérant avoir été plus clair
Commenter la réponse de farrakis
Messages postés
33
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
12 mai 2013
0
Merci
effectivement,

un simple
Grid.RowDefinitions(1).ActualHeight
dans le code behind et j ai la dimension voulue...

il est temps que je parte en vacances moi !

merci pour la réponse :)
Commenter la réponse de farrakis